Je construis un programme C ++ simple et je souhaite remplacer temporairement une bibliothèque partagée fournie par le système par une version plus récente de celle-ci, pour le développement et les tests.
J'ai essayé de définir la variable LD_LIBRARY_PATH mais l'éditeur de liens (ld) a échoué avec:
/ usr / bin / ld: impossible de trouver -lyaml-cpp
Je m'attendais à ce que cela fonctionne car selon la page de manuel ld:
L'éditeur de liens utilise les chemins de recherche suivants pour localiser les bibliothèques partagées requises: ... Pour un éditeur de liens natif, le contenu de la variable d'environnement "LD_LIBRARY_PATH" ...
J'ai ensuite essayé de définir LIBRARY_PATH, et cela a fonctionné.
Selon le manuel GCC:
La valeur de LIBRARY_PATH est une liste de répertoires séparés par deux-points, un peu comme PATH. Lorsqu'il est configuré en tant que compilateur natif, GCC essaie les répertoires ainsi spécifiés lors de la recherche de fichiers de liens spéciaux, s'il ne les trouve pas à l'aide de GCC_EXEC_PREFIX. La liaison à l'aide de GCC utilise également ces répertoires lors de la recherche de bibliothèques ordinaires pour l'option -l (mais les répertoires spécifiés avec -L viennent en premier).
Comme le suggère le manuel (GCC), LIBRARY_PATH fonctionne parce que je suis lié à GCC.
Mais..
- Depuis que je suis lié à gcc, pourquoi ld est appelé, comme le suggère le message d'erreur?
- Quel est l'intérêt d'avoir deux variables servant le même objectif? Y-a-t'il d'autres différences?