gcc
und ld
bieten viele Möglichkeiten, einen Suchpfad für Bibliotheken anzugeben, darunter die Flags -rpath
und -L
. Die Manpages zeigen keine Unterschiede zwischen diesen beiden Flags, was effektiv bedeutet, dass jedes Flag dem Bibliothekssuchpfad eine Bibliothek hinzufügt. Es scheint jedoch seltsam, dass beide Flaggen genau dasselbe tun. Was sind die Unterschiede zwischen diesen beiden Optionen, wenn überhaupt?
gcc
linker
shared-libraries
ld
Craig M. Brandenburg
quelle
quelle
-rpath-link
?Antworten:
Sie müssen einige veraltete Kopien der Manpages lesen (Hervorhebung hinzugefügt):
vs.
Gibt an, wo nach Bibliotheken gesucht werden soll,
-L
mitld
denen beim Verknüpfen verknüpft werden soll. Sie verwenden dies (zum Beispiel), wenn Sie Bibliotheken in Ihrem Build-Baum erstellen, die von in die normalen Systembibliothekspfade von eingefügt werdenmake install
.--rpath
Auf der anderen Seite wird dieser Pfad in der ausführbaren Datei gespeichert, sodass der dynamische Laufzeitlinker die Bibliotheken finden kann. Sie verwenden dies, wenn sich Ihre Bibliotheken außerhalb des Suchpfads der Systembibliothek befinden.quelle
-rpath=/some/weird/path
, braucht man-L /some/weird/path
auch. 2. Mitgcc
einem braucht man Gebrauch-Wl,-rpath=dir
.