
Meine Linker sind in
/lib{32,64}/ld-2.20.so
, mit symbolischen Links bei
/lib32/ld-linux.so.2
Und
/lib64/ld-linux-x86-64.so.2
(zum entsprechenden ld-2.20.so
s)
Wenn ich versuche, eine 32-Bit-Binärdatei auszuführen, ist alles in Ordnung. Die Kompilierung funktioniert einwandfrei (ich verwende eine leicht modifizierte GCC- specs
Datei), die Verknüpfung funktioniert scheinbar einwandfrei und die Dateien laufen einwandfrei.
Wenn ich es versuche ldd /path/to/example/32bit/binary
, wird mir Folgendes angezeigt not a dynamic executable
. Meines Wissens liegt das daran, dass kein Linker zum Öffnen der ausführbaren Datei gefunden werden kann.
readelf -l example_binary | grep interpreter
gibt [Requesting program interpreter: /lib32/ld-linux.so.2]
, wie erwartet.
Irgendwelche Ideen, warum das passiert / wie ich es beheben kann?
Ps - „Installieren Sie 32-Bit-Kompatibilitätsbibliotheken mit sudo apt get ...“ ist nicht hilfreich, da ich apt/pacman/etc. nicht habe. Wenn ich eine bestimmte (32-Bit-)Bibliothek neu installieren muss, wäre es hilfreich, das zu wissen!
gcc
Pps - Die von at installierten Skriptdateien /usr/lib{32,64}/libc.so
gruppieren die entsprechenden (echten) libc.so.6
und libc_nonshared.a
Dateien, mit dem AS_NEEDED ( /lib32/ld-linux.so.2 ) )
am Ende für lib32
Antwort1
Es stellt sich heraus, dass das ziemlich einfach ist.
/usr/bin/ldd
ist nur eine Skriptdatei.
Beim Öffnen der Skriptdatei wird oben eine Zeile angezeigt, die zunächst (auf meinem System) lautet:
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
.
Durch Ändern dieser Zeile wurde
RTLDLIST="/lib32/ld-linux.so.2 /lib64/..."
das Problem sofort behoben.
P.S. (füge es hier hinzu, falls es jemand anderem hilft, der Probleme mit der Installation von gobject-introspection hat). Die Lösung ist auch nützlich, wenn Sie versuchen, gobject-introspection zu installieren, da dies Aufrufe ldd
zum Auflösen von Bibliotheken durchführt.
Die Fehlermeldung die ich dort bekam war:ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0