Dynamische 32-Bit-ausführbare Datei kann nicht auf 64-Bit-Ubuntu ausgeführt werden

1296
Chris Olin

Für das Protokoll habe ich heute fast 6 Stunden damit gearbeitet. Ich habe Google und andere ähnliche Fragen zu Stack Overflow / Superuser und anderen Mailinglisten erschöpft.

Ich versuche folgende Anwendung auszuführen:

# file ./ncsvc ./ncsvc: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped  # ls -la ncsvc -rws--s--x 1 root root 1931688 Dec 19 20:41 ncsvc 

Ich verwende eine 64-Bit-Version von Ubuntu:

# uname -m x86_64 

Nun, mit dieser Vergangenheit haben wir einige Details zu den Bibliotheken, die diese Anwendung benötigt:

# readelf -a ./ncsvc | grep interpreter [Requesting program interpreter: /lib/ld-linux.so.2]  # readelf -a ./ncsvc | grep NEEDED 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libz.so.1] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libc.so.6] 

Hier stecke ich fest:

# ls -la /lib/ld-linux.so.2 lrwxrwxrwx 1 root root 32 Dec 19 23:31 /lib/ld-linux.so.2 -> /lib/x86_64-linux-gnu/ld-2.15.so  # locate libdl.so.2 /lib/i386-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libdl.so.2  # locate libz.so.1 /lib/i386-linux-gnu/libz.so.1 /lib/i386-linux-gnu/libz.so.1.2.3.4 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1.2.3.4  # locate libpthread.so.0 /lib/i386-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so.0  # locate libm.so.6 /lib/i386-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6  # locate libc.so.6 /lib/i386-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6 

Soweit ich das beurteilen kann, habe ich den dynamischen Linker und alle gemeinsam genutzten Bibliotheken, die er ausführen muss (tl; dr: ia32-libs ist installiert). Außer wenn ich es starte, erhalte ich diesen Fehler.

# ./ncsvc bash: ./ncsvc: cannot execute binary file 

Ich bin mir nicht sicher, ob dies etwas hilfreiches bedeutet.

# ldd -v ./ncsvc not a dynamic executable 
0
Haben Sie Zugriff auf den Quellcode? Einfach wieder aufbauen ... MattDMo vor 10 Jahren 0
If it wasn't clear before, let me spell it out. I don't have access to the source. It's proprietary and the owner (Juniper) has not released a 64-bit version. Other people seem to have gotten it to work on 64-bit environments without issue however. Chris Olin vor 10 Jahren 0

1 Antwort auf die Frage

0
Chris Olin

Der Kernel wurde nicht mit der 32-Bit-Emulationsunterstützung unterstützt. Durch den Neustart und die Auswahl eines Kernels wurde dieses Problem behoben.