ldd mit 32-Bit-Binärdateien auf 64-Bit-Systemen - wird ausgeführt, aber nicht gemeldet

3

Meine Linker sind in

/lib{32,64}/ld-2.20.somit 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. Sie kompilieren gut (ich benutze einen leicht modifizierten gcc specs Datei) und scheinbar gut verlinken, und gut laufen.

Wenn ich es versuche ldd /path/to/example/32bit/binary, Mir wurde gesagt not a dynamic executable. Meines Wissens liegt dies 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 dies geschieht / wie ich es beheben kann?

Ps. - "32-Bit-Kompatibilitätsbibliotheken mit sudo apt get ... installieren" ist nicht hilfreich, da apt / pacman / etcetera nicht vorhanden ist. Wenn ich eine bestimmte (32-Bit-) Bibliothek neu installieren muss, ist es hilfreich, wenn ich weiß, dass dies hilfreich ist!

P.p.s - Die von installierten Skriptdateien gcc beim /usr/lib{32,64}/libc.so gruppieren Sie die entsprechenden (realen) libc.so.6 und libc_nonshared.a Dateien, mit der AS_NEEDED ( /lib32/ld-linux.so.2 ) ) am hinteren ende für lib32

chrisb2244
quelle

Antworten:

2

Es stellt sich heraus, dass dies ziemlich einfach ist.

/usr/bin/ldd ist nur eine Skriptdatei.

Beim Öffnen der Skriptdatei wird eine Zeile in der Nähe des oberen Bereichs 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".

Ändern dieser Zeile in RTLDLIST="/lib32/ld-linux.so.2 /lib64/..." habe das problem sofort behoben.

Ps. (Hinzufügen hier, falls es jemand anderem hilft, Gobject-Introspection zu installieren) ldd Bibliotheken auflösen.

Die Fehlermeldung, die ich dort erhielt, war: ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0

chrisb2244
quelle