エラーを受け取る:bash:./program:バイナリファイルを実行できません:Exec形式エラー

エラーを受け取る:bash:./program:バイナリファイルを実行できません:Exec形式エラー

私がコマンドを実行すると

./program 

エラーが発生します。

bash: ./program: cannot execute binary file: Exec format error

私が実行すると、uname -a次のようになります。

4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 i686 i686 GNU/Linux

また、実行したいプログラムに関する情報を確認しましたが、次のような結果が出ました。

ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=c154cb3d21f6bbd505d165aed3aa6ed682729441, not stripped

/proc/cpuinfoプログラム

flags       : fpuvme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts

このプログラムをどのように実行できますか?

ベストアンサー1

64ビットx86 CPU(lm/proc/cpuinfo)がありますが、32ビットカーネルを実行しています。実行しようとしているプログラムには64ビットランタイムが必要なため、そのまま実行されません。 32ビットカーネルは、64ビットCPUでも64ビットプログラムを実行できません。

32ビットバージョンのプログラムが見つかった場合(または直接ビルドできる場合)、それを使用してください。

あるいは、64ビットカーネルをインストールして再起動し、プログラムに必要な64ビットライブラリをインストールすることもできます。

64ビットカーネルをインストールするには、次の手順を実行します。

sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get install linux-image-generic:amd64

これにより、最新の64ビットXenialカーネルとさまざまな64ビットサポートパッケージがインストールされます。再起動したら、代わりに表示されるuname -aことを確認する必要があります。プログラムを再実行しようとすると正しく機能する可能性があり、後者の場合、欠落しているライブラリによってエラーメッセージが表示されることがあります。プログラムを正しく実行するには、適切なパッケージをインストールしてください。x86_64i686apt-file

おすすめ記事