Ausführen einer 32-Bit-ausführbaren Datei auf einem 64-Bit-Ubuntu Oneric

Ausführen einer 32-Bit-ausführbaren Datei auf einem 64-Bit-Ubuntu Oneric

Ich versuche, eine 32-Bit-ausführbare Datei auf meinem 64-Bit-Ubuntu auszuführen. Hier ein kurzer Überblick über die Situation. Aber ich muss voranstellen, dass ia32-Bibliotheken installiert sind:

> aptitude search ia32
i   ia32-libs - ia32 shared libraries for use on amd64 and ia64 syste

Zuerst habe ich den Dateityp getestet:

> 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

Ich verwende 64-Bit-Oneric mit dem nicht ganz so aktuellen Kernel, da ich es noch nicht neu gestartet habe.

> 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

Wie gesagt, die normale Ausführung funktioniert nicht. Sie wird mit der Meldung „Datei oder Verzeichnis nicht gefunden“ abgebrochen.

> 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
[...]

Hier ist die ldd-Ausgabe auf meinem System. Auf meinem 64-Bit-Debian-Server wird das Programm als dynamisch verknüpftes Programm erkannt und in der Ausgabe sind einige Bibliotheksreferenzen zu sehen. Aber auf meinem Ubuntu:

> ldd tipp10
    \tdas Programm ist nicht dynamisch gelinkt
# german for: "The programm is not linked dynamic"

Ich verstehe nicht, was los ist.

Antwort1

Überprüfen Sie, ob Sie libc6-i386 richtig installiert haben. ENOENTEs execvedeutet auf einen fehlenden dynamischen Linker hin.

verwandte Informationen