Erreur gcc - / usr / bin / ld: impossible de trouver & lt; library & gt; dans / usr / local / lib si ldconfig l'affiche, et le chemin ajouté à ld.so.conf
J'essaie de compiler un code C++, à l'aide d'une bibliothèque, j'ai aussi compilé manuellement et installé dans /usr/local/lib
La compilation du logiciel échoue à l'étape de liaison:
/usr/bin/ld: error: cannot find -lcppdb
il semble que g++ ne prend pas de recherche par défaut dans /usr/local/lib
, même pour clang++
g++ -print-search-dirs # does not show /usr/local/lib
cependant le fait est /usr/local/lib
est dans mon /etc/ld.so.conf
et je n'ai couru ldconfig
en tant que root, et effectivement en cours d'exécution ldconfig -p | grep cppdb
me montre
libcppdb_sqlite3.so.0 (libc6) => /usr/local/lib/libcppdb_sqlite3.so.0
libcppdb_sqlite3.so (libc6) => /usr/local/lib/libcppdb_sqlite3.so
libcppdb.so.0 (libc6) => /usr/local/lib/libcppdb.so.0
libcppdb.so (libc6) => /usr/local/lib/libcppdb.so
l'ajout de l'option -L/usr/local/lib
bien sûr de résoudre le problème, mais le but est d'utiliser les fichiers de configuration
source d'informationauteur allan.simon
Vous devez vous connecter pour publier un commentaire.
ld
l'éditeur de liens, ne pas utiliser des fichiers de configuration.ldconfig
est pour le chargeur,ld.so
. Créer un fichier makefile si vous souhaitez définir des valeurs pour l'éditeur de liens quelque part.1, Vous pouvez utiliser l'éditeur de liens de script, et ajouter '/usr/local/lib' à search_dir.
voir ce Linker_Scripts pour obtenir plus de détails.
2, ajouter /usr/local/lib à GCC_EXEC_PREFIX de l'environnement de shell, et essayez à nouveau.
plus de détails de recherche à l'impression de la recherche-dirs dans "l'homme" de g++.
juste une suggestion, il n'a pas encore essayé.
Précisant
-L
interrupteurs dans votre makefile est une manière commune de faire face à ce problème, mais vous pouvez réellement apporter des modifications au système en modifiant la valeur par défaut de GCC le fichier de spécificationqui peut être utilisé pour spécifier des options supplémentaires pour être passés au compilateur, éditeur de liens, etc. Je l'ai fait dans le passé afin de résoudre votre problème spécifique, mais c'était il y a longtemps, donc je ne peux pas vous donner un exemple précis, malheureusement.