/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!

121
demandé sur Martin G 2011-03-07 09:04:55

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.

74
répondu Chris 2011-03-07 06:20:24

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.

43
répondu Martin G 2015-04-28 03:16:48

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.

42
répondu Hobo 2014-06-20 13:26:20

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.

12
répondu Cheng Chang 2013-08-02 11:49:21

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

2
répondu crazyLinux 2014-08-06 07:20:43

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.

2
répondu Favoorr 2015-07-22 15:17:54

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.

2
répondu Arsen 2015-12-24 20:04:10

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é!

1
répondu iueae 2012-06-26 13:21:40

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.

1
répondu prmottajr 2016-10-13 10:25:32

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:

  1. 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 est 3.4.19.
  2. 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).
1
répondu Gili 2017-03-09 21:15:13

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.

0
répondu Evgeni Sergeev 2013-06-11 18:02:37

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

0
répondu ZijunLost 2013-10-09 16:59:00

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.

0
répondu Marco Silva 2014-08-16 15:26:55

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.

0
répondu SmallChess 2015-04-03 12:41:38

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.

0
répondu Cathy 2015-06-22 22:22:41

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.

0
répondu ervinbosenbacher 2018-02-22 21:11:37

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.

0
répondu Chan Kim 2018-05-08 09:00:07