Ajouter le chemin de la bibliothèque au LD_LIBRARY_PATH
variable d'environnement
TL;DR
GCC vous demande de lui indiquer manuellement où se trouve votre bibliothèque lorsqu'il ne peut pas trouver la bonne version, ce qui peut être fait de plusieurs manières. On l'ajoute au LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
Pour certains, le chemin de la bibliothèque sera /usr/local/lib64/
. D'autres ont signalé le chemin de la bibliothèque /usr/lib/x86_64-linux-gnu/
travailler pour eux à la place.
Pourquoi devons-nous ajouter la bibliothèque à LD_LIBRARY_PATH
?
Lorsque vous compilez et installez GCC, il place les bibliothèques dans l'un de ces répertoires, mais c'est tout ce qu'il fait. D'après la FAQ pour libstdc++
, l'erreur que nous avons obtenue signifie que l'éditeur de liens dynamique a trouvé la mauvaise version du libstdc++
bibliothèque partagée. Parce que l'éditeur de liens ne peut pas trouver la bonne version, nous devons lui dire où trouver le libstdc++
bibliothèque.
Le moyen le plus simple de résoudre ce problème consiste à utiliser la variable d'environnement LD_LIBRARY_PATH, qui est une liste de répertoires séparés par deux-points dans lesquels l'éditeur de liens recherchera des bibliothèques partagées.
Il existe également d'autres moyens de résoudre ce problème. Vous pouvez trouver cela et les autres solutions mentionnées brièvement lorsque vous installez gcc
si vous lisez la sortie make :
Des bibliothèques ont été installées dans :
/usr/local/lib/../lib32
S'il vous arrive de vouloir lier des bibliothèques installées dans un répertoire donné, LIBDIR, vous devez soit utiliser libtool et spécifier le chemin d'accès complet de la bibliothèque, soit utiliser le drapeau `-LLIBDIR' pendant la liaison et faire au moins une des suivant :
- ajouter LIBDIR à la variable d'environnement `LD_LIBRARY_PATH' lors de l'exécution
- ajoutez LIBDIR à la variable d'environnement `LD_RUN_PATH' lors de la liaison
- utiliser l'indicateur de lien `-Wl,-rpath -Wl,LIBDIR'
- demandez à votre administrateur système d'ajouter LIBDIR à `/etc/ld.so.conf'
Consultez la documentation du système d'exploitation sur les bibliothèques partagées pour plus d'informations, telles que les pages de manuel ld(1) et ld.so(8).
Grr, c'était simple ! De plus, "si jamais vous voulez créer un lien avec les bibliothèques installées", sérieusement ?
J'ai eu le même problème sur mon Ubuntu 14.04 lorsque j'ai essayé d'installer TopTracker. J'ai eu de telles erreurs :
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 :version 'CXXABI_1.3.8' introuvable (requis par /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 :version 'GLIBCXX_3.4.21' introuvable (requis par /usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 :version 'CXXABI_1.3.9' introuvable (requis par /usr/share/toptracker/bin/TopTracker)
Mais j'ai ensuite installé la version 4.9 de gcc et le problème a disparu :
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9