無効なスキーマによる「該当するファイルまたはディレクトリなし」エラー

無効なスキーマによる「該当するファイルまたはディレクトリなし」エラー

走ろうとしています。クロスコンパイラ私の64ビットUbuntuで。次のエラーが発生します。

$ ./arm-none-eabi-gcc
bash: ./arm-none-eabi-gcc: No such file or directory

ファイルはここにあり、いくつかのデータが含まれています。

$ ls -la arm-none-eabi-gcc
-rwxr-xr-x 2 alan alan 776368 Sep 26 19:36 arm-none-eabi-gcc
$ head -n 1 arm-none-eabi-gcc
ELFا4�
         4  (44�4�  TT�T���|�

ldd依存関係が不要であることを示します。

$ ldd arm-none-eabi-gcc
not a dynamic executable

strace追加情報は提供されません。

$ strace ./arm-none-eabi-gcc
execve("./arm-none-eabi-gcc", ["./arm-none-eabi-gcc"], [/* 80 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

最後に、それは32ビットシステム用であることがわかりました。

$ file arm-none-eabi-gcc
arm-none-eabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped

質問

バイナリのアーキテクチャが間違っている場合、なぜエラーがあいまいなのですか?

バイナリ実行が適切ではない.JPGを実行しようとすると、次のような状況が発生することを願っています。

$ ./DSC_0140.JPG 
bash: ./DSC_0140.JPG: cannot execute binary file: Exec format error

ベストアンサー1

エラーは、バイナリのローダーが欠落しているために発生します/lib/ld-linux.so.2(図を参照file)。インストールが完了したら、それを実行して、さらにldd arm-none-eabi-gcc必要なものを確認できます。

実行ファイルはカーネルが理解する有効な形式なので、「Exec Format Error」は発生しませんが、カーネルが実行しようとすると必要なファイル(ローダ)が見つからないため、「No such file」が発生します。またはディレクトリ"。

見つけたとおり、64ビットシステムで動作させるためのクイックソリューションは、次のことを実行することです。

sudo apt-get install lib32z1 lib32ncurses5

長期的に見ると、より良い解決策は適切な:i386マルチアーキテクチャパッケージを使用することです(これがパッケージで紹介するものでなければなりませんlib32)。

おすすめ記事