Verwendung von -rpath in der Kompilierung, um ausführbare Dateien zu setzen, durchsuchen Sie die shared library im selben Verzeichnis - linux, compilation, shared-libraries, rpath

So legen Sie die ausführbare Datei fest Suchen Sie die freigegebene Bibliothek indas gleiche Verzeichnis in kompilieren, Ich habe die ausführbare Datei und die zugehörigen .so-Bibliotheken im selben Verzeichnis abgelegt, anstatt changubg LD_LIBRARY_PATH oder /etc/ld.so.conf, Ist es möglich, -rpath als eine Variable zu setzen, die das Verzeichnis ist, in dem die ausführbare Datei gespeichert ist, und die Variable keinen bestimmten Pfad hat, kann sie geändert werden.

Antworten:

1 für die Antwort № 1

Ist es möglich, -rpath als Variable festzulegen?

Ja du willst DT_RPATH eingestellt werden $ORIGIN, so:

gcc main.c -Wl,-rpath="$ORIGIN" -lfoo -lbar

Hinweis: Sie müssen die $ORIGIN um zu verhindern, dass Shell es ausdehnt - das RPATH Muss enthalten die $ Schild.

Eine andere Möglichkeit ist, wie folgt zu verlinken:

gcc main.c ./libfoo.so ./libbar.so

Dies funktioniert nur, wenn libfoo.so und libbar.so machen nicht haben DT_SONAME gesetzt, und im Allgemeinen ist eine minderwertige Lösung. Ich erwähne es hier nur aus Gründen der Vollständigkeit.


Am beliebtesten