web-dev-qa-db-ja.com

64ビットシステムで32ビットプログラムを実行する場合の「No such file」

次のように、Chromiumスナップショットをダウンロードして解凍しました。

michael@ubuntu:/opt/chrome-linux$ ls
chrome                  libffmpegsumo.so                nacl_irt_x86_32.nexe
chrome.1                libppGoogleNaClPluginChrome.so  product_logo_48.png
chrome_100_percent.pak  locales                         resources
chrome.pak              nacl_helper                     resources.pak
chrome_sandbox          nacl_helper_bootstrap           xdg-mime
chrome-wrapper          nacl_irt_srpc_x86_32.nexe       xdg-settings

しかし、chromeを実行しようとしても、そこにはありません...

michael@ubuntu:/opt/chrome-linux$ ./chrome
bash: ./chrome: No such file or directory

なぜ開かないのか知っていますか? Xubuntu 12.10 AMD64を実行します。

michael@ubuntu:/opt/chrome-linux$ ldd /opt/chrome-linux/* | grep -i "not found"
ldd: /opt/chrome-linux/locales: not regular file
ldd: /opt/chrome-linux/resources: not regular file
6
Michael

32ビットのサポートがありません。インストール libc6:i386 、すなわち32ビットのベースライブラリパッケージ、およびChromeが必要とする他のすべての32ビットライブラリ(おそらくそうです) Chromiumパッケージ )の依存関係に近くなるようにします。

「ローダー」に依存するファイルの実行に失敗すると、エラーは実行中のファイルではなくローダーを参照する場合があります。

  • 動的にリンクされたネイティブ実行可能ファイルのローダーは、動的ライブラリのロードを担当するシステムの一部です。 /lib/ld.so/lib/ld-linux.so.2のようなもので、実行可能ファイルでなければなりません。
  • スクリプトのローダーは、 Shebang 行に記載されているプログラムです。 /bin/shで始まるスクリプトの場合は#!/bin/sh

エラーメッセージは、ローダーが問題であることを示していないという点でかなり誤解を招きます。残念ながら、カーネルインターフェイスには数値エラーコードを報告するだけのスペースがあり、実際にはエラーが別のファイルに関係していることを示すためではなく、これを修正するのは困難です。

/lib/ld-linux.so.2パッケージに含まれる32ビットダイナミックローダーlibc6:i386をインストールすると、少なくとも他の欠落しているライブラリを通知する誤解を招かないエラーメッセージが表示されます。

5
Gilles

Gillesのソリューションに到達する最速の方法は、 ia32-libs-multiarch をインストールすることです。これはパッケージのlotを取り込みますが、すべての異なる依存関係を把握する時間を節約します。

1
iGadget