Ich habe eine ausführbare Datei wie folgt verlinkt:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Wo sich die Bibliotheken libcrypto und libssl befinden, ist openssl 1.0.0-fips libs. Ich möchte stattdessen mit den 1.0.1-Bibliotheken experimentieren und habe sie daher in meinem Ausgangsverzeichnis erstellt. Gibt es eine Möglichkeit, a.out
ohne großen Aufwand einen Relink zu meinen neuen OpenSL-Bibliotheken herzustellen? Ich würde gerne vermeiden
- Erneut verknüpfen müssen
a.out
(weil die Build-Tools sehr kompliziert sind) - Ändern globaler Einstellungen (da andere Entwickler auf diesem Computer arbeiten)
Kann man hier machen, was ich mir erhoffe?
Schreiben Sie ein Wrapper-Skript, das die
LD_LIBRARY_PATH
Umgebungsvariable festlegt . Dies ist das PendantPATH
für gemeinsam genutzte Bibliotheken. Der Systemsuchpfad wird immer nach den in aufgelisteten Verzeichnissen durchsucht$LD_LIBRARY_PATH
. Weitere Informationen finden Sie im Dynamic Linker-Handbuch .Oder einmalig direkt in der Befehlszeile:
Wenn Sie die Binärdatei ändern möchten , können Sie auch chrpath verwenden , um den in der ausführbaren Datei gespeicherten Bibliothekssuchpfad zu bearbeiten.
quelle
chrpath
. Genau das, was ich brauchte.