Linux
為什麼我的二進製文件不能執行?
我有一個在我的 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) = ?
64 位作業系統沒有安裝 32 位庫。
apt-get update; apt-get upgrade; apt-get install ia32-libs
這將提供缺少的 /lib/ld-linux.so.2。
您可能缺少 i386 libc,請嘗試使用
apt-get install libc6-i386
.您還可以通過執行以下命令向您的系統添加多架構支持:
dpkg --add-architecture i386 apt-get update
apt-get install package-name:i386
之後,如果i386 支持多架構,您可以安裝一個包。有關更多資訊,請查看multiarch howto