gcc
et ld
fournissent de nombreuses façons de spécifier un chemin de recherche pour les bibliothèques - parmi elles, les indicateurs -rpath
et -L
. Les pages de manuel ne révèlent aucune différence entre ces deux indicateurs, indiquant que chaque indicateur ajoute une bibliothèque au chemin de recherche de la bibliothèque. Pourtant, il semble étrange que les deux drapeaux fassent exactement la même chose. Quelles sont les différences, le cas échéant, entre ces deux options?
Réponse
Trop de publicités?Vous devez être la lecture de certains obsolètes des copies des pages de manuel (italiques ajoutés):
-rpath=dir
Ajouter un répertoire à l' exécution chemin de recherche des bibliothèques. Ce est utilisé
lors de la liaison d'un ELFE exécutable avec des objets partagés. Tous -rpath
les arguments sont concaténés et passé à l' exécution de l'éditeur de liens, qui
utilise pour localiser les objets partagés au moment de l'exécution.
vs
-L searchdir
--library-path=searchdir
Ajouter le chemin searchdir à la liste des chemins ld recherche
archives des bibliothèques et de la ld les scripts de contrôle.
Donc, -L
dit ld
où chercher pour les bibliothèques de lien contre lors de la liaison. Vous utilisez (par exemple) lorsque vous êtes en train de construire à l'encontre des bibliothèques dans votre arbre de construction, qui sera placé dans le système normal de la bibliothèque des chemins en make install
. --rpath
, d'autre part, les magasins qui chemin à l'intérieur de l'exécutable, de sorte que le moteur d'exécution l'éditeur de liens dynamiques pouvez trouver les bibliothèques. Vous utilisez cette fonction lorsque vos bibliothèques sont en dehors du système de chemin de recherche des bibliothèques.