Por que meu binário não funciona?

1

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)      

                    = ?
    
por chad 07.01.2013 / 21:28

2 respostas

2

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.

    
por 07.01.2013 / 23:13
3

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

    
por 07.01.2013 / 21:38