/usr / lib / libstdc++. so. 6: Version' glibcxx 3.4.15 ' introuvable
Comment puis-je obtenir GLIBCXX_3.4. 15 dans Ubuntu? Je ne peux pas exécuter certains programmes que je compile.
Quand je fais:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
Je reçois:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Merci pour toute aide!
17 réponses
Je compile gcc 4.6 à partir de la source, et apparemment
sudo make install
N'a pas attrapé celui-ci. J'ai creusé autour et trouvé
gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15
J'ai copié dans /usr/lib et redirigé libstdc++.donc.6 pour pointer vers le nouveau, et maintenant tout fonctionne.
J'ai évité ce problème dans le passé en liant simplement libstdc++ statiquement avec ce paramètre envoyé à G++ lors de la liaison de mon exécutable:
-static-libstdc++
Si la liaison statique dans la Bibliothèque est une option, c'est probablement le contournement le plus rapide.
J'essayais de faire fonctionner clang (ce qui nécessite également 6.0.15), et en fouinant, j'ai trouvé qu'il était installé à /usr/local/lib/libstdc++.so.6.0.15
. Il s'est installé là quand j'ai installé graphite (une version expérimentale de gcc).
Si vous avez besoin d'accéder aux bibliothèques à cet emplacement, vous devrez définir LD_LIBRARY_PATH
comme suit:
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
J'ai pu faire travailler clang après avoir fait cela. L'espoir qui est utile à quelqu'un.
Je rencontre ce problème en essayant d'utiliser matlab eng pour appeler des fonctions m à partir du code C.
qui se produit avec la commande mex -f .. ..
Ma solution:
strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC
J'ai trouvé qu'il inclut 3.4.15
Donc mon système a les dernières libs.
Le problème vient de matlab lui-même, il appelle sa propre libstdc++. so. 6 de {MATLAB}/bin
Donc, il suffit de le remplacer par la version mise à jour du système.
Pour cette erreur, j'ai copié la dernière libstdc++. so. 6. 0. 17 à partir d'un autre serveur, et supprimé le lien Logiciel et recréé.
1. Copiez le libstdc++. so. 6. 0. 15 ou latest d'un autre serveur vers le système affecté.
Dans mon cas, SUSE linux 11 SP3 avait le dernier.
2. rm libstdc++.donc.6
3. ln-s libstdc++. so. 6. 0. 17 libstdc++. so. 6 (sous le répertoire/usr / lib64).
NJoy
Gcc version 4.8.1, l'erreur semble être:
/root/bllvm/build/Release+Affirme/bin/llvm-tblgen: /usr / lib64 / libstdc++. so. 6: Version' GLIBCXX_3.4.15 ' introuvable (requis par / root / bllvm/build / Release+assertions / bin / llvm-tblgen)
J'ai trouvé le libstdc++. so. 6. 0. 18 à l'endroit où j'ai respecté gcc 4.8.1
Alors j'aime ça
cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/
rm /usr/lib64/libstdc++.so.6
ln -s libstdc++.so.6.0.18 libstdc++.so.6
Problème résolu.
Je viens de faire face à un problème similaire en construisant la version LLVM 3.7. vérifiez d'abord si vous avez installé la bibliothèque requise sur votre système:
$locate libstdc++.so.6.*
Ajoutez ensuite l'emplacement trouvé à votre variable d'environnement $ LD_LIBRARY_PATH.
J'ai eu la même erreur. Voici comment cela a fonctionné pour moi:
- nettoyé le projet sous gcc actuellement installé
- recompilé
A parfaitement fonctionné!
Je les ai extraits d'un RPM (RPM pour libstdc++) et ensuite:
export LD_LIBRARY_PATH=.
Pour définir le système pour rechercher les bibliothèques dans le répertoire courant. Puis juste exécuté mon programme. Mais dans mon cas, j'ai reçu un seul exécutable dont j'avais besoin, ce n'était pas un changement à l'échelle du système.
Parfois, vous ne contrôlez pas la machine cible (par exemple, votre bibliothèque doit fonctionner sur un système d'entreprise verrouillé). Dans un tel cas, vous devrez recompiler votre code en utilisant la version de GCC qui correspond à leur version GLIBCXX. Dans ce cas, vous pouvez faire ce qui suit:
- recherchez la dernière version de GLIBCXX prise en charge par la machine cible:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Dites que la version est3.4.19
. - Utiliser https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html pour trouver la version GCC correspondante. Dans notre cas, c'est
[4.8.3, 4.9.0)
.
J'ai eu un problème similaire, et je l'ai résolu en liant statiquement libstdc++
dans le programme que je compilais, comme ceci:
$ LIBS=-lstdc++ ./configure ... etc.
Au Lieu de l'habituel
$ ./configure ... etc.
Il peut y avoir des problèmes avec cette solution à voir avec le chargement des bibliothèques partagées à l'exécution, mais je n'ai pas examiné le problème assez profondément pour commenter.
J'ai eu le même problème auparavant, et j'ai corrigé cela, les étapes pouvaient être trouvées sur ceci Correction de l'erreur "GLIBCXX_3.4. 15" sur matlab
Bug avec GLIBCXX_3.4. 14 Vous devez installer une version plus récente de GCC. http://pkgs.org/download/libstdc++. so. 6 goto:
Http://geeksterminal.com/how-to-install-glib-glibc/1392/
Et suivez les instructions.
J'ai eu le même problème car j'ai changé l'utilisateur de moi-même à quelqu'un d'autre:
Su
Pour une raison quelconque, après la compilation normale, je n'ai pas pu l'exécuter (le même message d'erreur). Directement ssh à l'autre compte d'utilisateur fonctionne.
J'avais plusieurs versions du compilateur gcc installées et j'avais besoin d'utiliser une version plus récente que l'installation par défaut. Comme je ne suis pas un administrateur système pour nos systèmes Linux, Je ne peux pas simplement changer /usr / lib ou beaucoup d'autres suggestions ci-dessus. Je rencontrais ce problème et je l'ai finalement suivi jusqu'à définir mon chemin vers le répertoire de la bibliothèque 32 bits au lieu du répertoire de la bibliothèque 64 bits (lib64). Étant donné que les bibliothèques du répertoire 32 bits étaient incompatibles, le système par défaut à l'ancienne version qui était obsolète.
L'utilisation de-L sur le chemin que je référencais a donné des avertissements sur "sauter libstdc++incompatible. donc lors de la recherche de-lstdc++". Ce fut l'indice qui m'a aidé à résoudre finalement le problème.
Même chose avec la version de gcc 4.8.1 (GCC)
et libstdc++.so.6.0.18
. J'ai dû le Copier ici /usr/lib/x86_64-linux-gnu
sur ma boîte ubuntu.
Dans mon cas, LD_LIBRARY_PATH avait /usr / lib64 en premier avant /usr / local / lib64. (Je construisais llvm 3.9).
Le nouveau compilateur gcc que j'ai installé pour compiler llvm 3.9 avait des bibliothèques utilisant des bibliothèques glibcxx plus récentes sous / usr / local / lib64, donc J'ai corrigé LD_LIBRARY_PATH pour que l'éditeur de liens voie/usr/local / lib64 en premier.
Cela a résolu ce problème.