web-dev-qa-db-fra.com

GCC comment ajouter avant le chemin de recherche de l'éditeur de liens par défaut par défaut? LIBRARY_PATH ne fonctionne pas

J'essaie de comprendre comment définir une variable d'environnement qui obligerait g ++ à se lier aux versions correctes des bibliothèques.

J'ai quelques anciennes bibliothèques boost dans/usr/lib64 (la liaison contre celles-ci échouera) et de nouvelles bibliothèques dans/v/users/regel/lib. L'éditeur de liens doit donc établir un lien avec les nouvelles bibliothèques.

Commander:

$ g++ test.cpp -lboost_system -L/v/users/regel/lib

relie correctement le programme. Cependant, je souhaite le définir comme le répertoire de recherche numéro 1 pour l'éditeur de liens afin de ne pas avoir à spécifier "-L" à chaque connexion.

Les variables d'environnement suivantes ne semblent pas faire l'affaire:

$ LIBRARY_PATH=/v/users/regel/lib g++ test.cpp -lboost_system
/tmp/regel/cc4SmBtI.o: In function `main':
test.cpp:(.text+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status

et

$ LD_LIBRARY_PATH=/v/users/regel/lib:$LD_LIBRARY_PATH g++ test.cpp -lboost_system
/tmp/regel/ccUreBZy.o: In function `main':
test.cpp:(.text+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status

Malgré la lecture de nombreux articles et articles sur des sujets similaires, je n'ai pas encore trouvé de solution.

20
Regel

Comme le manuel GCC dit , LIBRARY_PATH est la variable d'environnement correcte pour ajouter des répertoires au chemin de recherche de la bibliothèque.

Si vous ajoutez -v à la g++ commande, vous devriez voir le LIBRARY_PATH qu'il utilise et vous devriez voir qu'il inclut le répertoire que vous avez spécifié et qu'il est ajouté au collect2 commande comme -L, mais vous verrez qu'il est ajouté après les répertoires standard tels que -L/usr/lib etc.

Je ne connais aucun moyen de créer les répertoires dans LIBRARY_PATH d'abord, je pense que vous devez utiliser -L pour ça.

17
Jonathan Wakely