走ろうとしています。クロスコンパイラ私の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
)。