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が表示されます。
答え2
i386 libcが見つからない可能性がありますapt-get install libc6-i386
。 。
次のコマンドを実行して、システムに複数のアーキテクチャサポートを追加することもできます。
dpkg --add-architecture i386
apt-get update
その後、i386パッケージをインストールできます(apt-get install package-name:i386
複数のアーキテクチャをサポートしている場合)。
詳細については、以下を確認してください。マルチアーキテクチャガイド