私のバイナリが実行されないのはなぜですか?

私のバイナリが実行されないのはなぜですか?

Debian Squeezeシステムで実行されるバイナリがありますが、Debian Wheezy(カーネルLinux 3.2.0-4-amd64)システムでは何もしません。どちらのシステムも64ビットで、実行可能ファイルは32ビットバイナリです。

これは次の出力です。

me@myhost:~$ file myApp.run
myApp.run: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped

この問題をどのように解決できますか?何の出力も得られず、すぐに返されます。

次のコマンドを使用してバイナリを実行しますstrace

chadmichael@heraclitus: ~/dir$ sudo strace ./myApp.run 
execve("./myApp.run", ["./myApp"...], [/* 17 vars */]) = 0
[ Process PID=24457 runs in 32 bit mode. ]
old_mmap(0xc6d000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0xc6d000) = 0xc6d000
readlink("/proc/self/exe", "/dir/myApp.run.run", 4096) = 129
old_mmap(0x8048000, 1108297, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x8048000
mprotect(0x8048000, 1108294, PROT_READ|PROT_EXEC) = 0
old_mmap(0x8157000, 42979, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0x10f000) = 0x8157000
mprotect(0x8157000, 42976, PROT_READ|PROT_WRITE) = 0
old_mmap(0x8162000, 15736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x8162000
brk(0x8166000)                          = 0x866e000
open("/lib/ld-linux.so.2", O_RDONLY)    = -1 ENOENT (No such file or directory)
_exit(127)      

                    = ?

ベストアンサー1

64ビットオペレーティングシステムには32ビットライブラリはインストールされていません。

apt-get update; apt-get upgrade; apt-get install ia32-libs

これにより、欠落している/lib/ld-linux.so.2が表示されます。

おすすめ記事