O O / S de 64 bits não possui as bibliotecas de 32 bits instaladas.
apt-get update; apt-get upgrade; apt-get install ia32-libs
Isso fornecerá a falta /lib/ld-linux.so.2.
Eu tenho um binário que roda no meu sistema Debian Squeeze, mas ele não faz nada no meu sistema Debian Wheezy (kernel Linux 3.2.0-4-amd64). Ambos os sistemas são de 64 bits, enquanto o executável é um binário de 32 bits.
Aqui está a saída de:
me@myhost:~$ file myApp.run
myApp.run: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped
Como faço para solucionar isso? Eu não recebo nenhuma saída, apenas retorna imediatamente.
Executando o binário com 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)
= ?
Você provavelmente está perdendo o i386 libc, tente instalá-lo com apt-get install libc6-i386
.
Você também pode adicionar suporte multiarch ao seu sistema executando:
dpkg --add-architecture i386
apt-get update
Depois você pode instalar um pacote para i386 com apt-get install package-name:i386
se ele suportar multiarch.
Para mais informações, consulte o howto multiarch
Tags executable linux 64bit 32bit