Verifique se você tem o libc6-i386 instalado corretamente; ENOENT
de execve
sugere um vinculador dinâmico ausente.
Estou tentando executar um executável de 32 bits no meu Ubuntu de 64 bits. Aqui uma breve visão geral da situação. Mas eu tenho que preceder ia32 libs estão instalados:
> aptitude search ia32
i ia32-libs - ia32 shared libraries for use on amd64 and ia64 syste
Antes de tudo, testei o tipo de arquivo:
> file tipp10
tipp10: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
Estou usando o Oneric de 64 bits, com o kernel não tão recente, porque ainda não o reiniciei.
> uname -a
Linux christchurch 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Como eu disse, a execução normal não funciona. Aborta com arquivo ou diretório não encontrado.
> strace ./tipp10
execve("./tipp10", ["./tipp10"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl(3, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
[...]
Aqui está a saída do ldd no meu sistema. No meu servidor Debian de 64 bits, o programm é reconhecido como um programa dinâmico e algumas referências de lib podem ser vistas na saída. Mas no meu Ubuntu:
> ldd tipp10
\tdas Programm ist nicht dynamisch gelinkt
# german for: "The programm is not linked dynamic"
Eu não entendo o que está acontecendo.