Ich möchte LD_PRELOAD auf eine gemeinsam genutzte Bibliothek zeigen, wo ich entweder eine 64-Bit- oder 32-Bit-Anwendung ausführen kann. Es ist offensichtlich, dass die gemeinsam genutzte Bibliothek und die ausführbare Datei in Bit-Übereinstimmung übereinstimmen müssen.Verwenden von LD_PRELOAD gemischte 64bit/32bit-Umgebung in Linux
$ LD_PRELOAD=/lib64/lib_init.so ./hello32
ERROR: ld.so: object '/lib64/lib_init.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored
wo hello32 ist eine 32-Bit-Anwendung. Es gibt einige Seiten in der Welt aus, die sagen, dass ich in der Lage sein sollte, zu tun:
$ LD_PRELOAD='/$LIB/lib_init.so' ./hello32
ERROR: ld.so: object '/$LIB/lib_init.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored
Wo $ LIB automatisch zwischen lib und lib64 je nach schaltet, ob die Anwendung 32 oder 64 Bit ist. Aber offensichtlich funktioniert das nicht.
Gibt es einen Trick, damit das funktioniert? LD_PRELOAD_32, LD_PRELOAD_64? Danke!
Ich würde einen Verpackungsskript verwenden, die die Bitness der App überprüft und eine Bibliothek entsprechend – user3159253
gesetzt Versuchen Sie nicht vollständigen Pfad angeben. Der dynamische Linker wählt den richtigen, z. LD_PRELOAD = lib_init.so – kofemann
@kofemann das war genau das was ich gesucht habe. Könnten Sie mir bitte eine Antwort geben, damit ich es genehmige? –