web-dev-qa-db-fra.com

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

130
Chris

Je compile gcc 4.6 depuis la source, et apparemment

Sudo make install 

n'a pas attrapé celui-ci. J'ai fouillé et trouvé

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15

Je l'ai copié dans/usr/lib et redirigé libstdc ++. So.6 pour pointer vers le nouveau, et maintenant tout fonctionne.

78
Chris

J'avais évité ce problème dans le passé en liant simplement libstdc ++ de manière statique 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, il s'agit probablement de la solution la plus rapide.

47
Martin G

J'essayais de faire fonctionner Clang (ce qui nécessite également la version 6.0.15) et, tout en fouillant, j'ai découvert qu'il était installé à /usr/local/lib/libstdc++.so.6.0.15. Il s’y est installé lors de l’installation de graphite (une version expérimentale de gcc).

Si vous avez besoin d’accéder aux bibliothèques à cet emplacement, vous devez définir LD_LIBRARY_PATH comme suit:

export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64

Je pouvais me mettre au travail après cela. J'espère que c'est utile pour quelqu'un.

44
Hobo

Je rencontre ce problème lorsque j'essaie d'utiliser matlab eng pour appeler m des fonctions à partir de 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 comprend 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

alors, remplacez-le simplement par la bibliothèque système mise à jour.

12
Cheng Chang

J'ai la même erreur. Voici comment cela a fonctionné pour moi:

  • nettoyé le projet sous gcc actuellement installé
  • recompilé

A parfaitement fonctionné!

2
iueae

Je viens de faire face à un problème similaire lors de la construction de la version LLVM 3.7. commencez par vérifier 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
Arsen

Pour cette erreur, j'ai copié la dernière version de libstdc ++. So.6.0.17 à partir d'un autre serveur, puis j'ai supprimé le lien virtuel et l'ai recréé.

1. Copiez le fichier libstdc ++. So.6.0.15 ou le plus récent depuis un autre serveur vers le système concerné.
Dans mon cas, SUSE linux 11 SP3 était le dernier.
2. rm libstdc ++. so.6
3. ln -s libstdc ++. so.6.0.17 libstdc ++. so.6 (sous le répertoire/usr/lib64).

non Joie

2
crazyLinux

gcc version 4.8.1, l'erreur semble être la suivante:

/ root/bllvm/build/Release + Asserts/bin/llvm-tblgen: /usr/lib64/libstdc++.so.6: version "GLIBCXX_3.4.15" introuvable (requise par/root/bllvm/build/Release + Release + Asserts/bin/llvm-tblgen)

J'ai trouvé la libstdc ++. So.6.0.18 à l'endroit où j'ai obéi 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
Favoorr

Parfois, vous ne contrôlez pas la machine cible (par exemple, votre bibliothèque doit être exécutée sur un système d'entreprise verrouillé). Dans ce cas, vous devrez recompiler votre code avec la version de GCC correspondant à la version de GLIBCXX. Dans ce cas, vous pouvez effectuer les opérations suivantes:

  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. Utilisez https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html pour trouver la version correspondante de GCC. Dans notre cas, il s'agit de [4.8.3, 4.9.0).
1
Gili

Je les ai extraits d'un RPM ( RPM pour libstdc ++ ), puis:

export LD_LIBRARY_PATH=.

Pour que le système recherche les bibliothèques dans le répertoire actuel. Puis vient d'exécuter 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
prmottajr

Je viens d'utiliser -static-libstdc ++ lors de la construction. w/que, je peux exécuter le a.out

g++ test.cpp -static-libstdc++
0
Suresh

Dans mon cas, LD_LIBRARY_PATH avait d'abord/usr/lib64 avant/usr/local/lib64. (Je construisais 11vm 3.9).
Le nouveau compilateur gcc que j’ai installé pour compiler llvm 3.9 disposait de bibliothèques utilisant les bibliothèques GLIBCXX les plus récentes sous/usr/local/lib64.
Cela a résolu ce problème.

0
Chan Kim

J'ai eu un problème similaire, et je l'ai résolu en liant statiquement libstdc++ dans le programme que je compilais, comme suit:

$ LIBS=-lstdc++ ./configure ... etc.

au lieu de l'habituel

$ ./configure ... etc.

Cette solution pose peut-être des problèmes de chargement de bibliothèques partagées au moment de l’exécution, mais je n’ai pas suffisamment étudié le problème pour le commenter.

0
Evgeni Sergeev

Même chose avec la version 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
ervinbosenbacher

J'ai eu le même problème avant, et corrigé cela, les étapes pourraient être trouvées sur ceci Erreur de fixation "GLIBCXX_3.4.15" sur matlab

0
ZijunLost

J'ai eu le même problème parce que 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
SmallChess

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
Marco Silva

J'avais plusieurs versions du compilateur gcc installé et je devais utiliser une version plus récente que l'installation par défaut. Étant donné que je ne suis pas administrateur système pour nos systèmes Linux, je ne peux pas simplement changer/usr/lib ou bon nombre des suggestions ci-dessus. Je rencontrais ce problème et finissais par le localiser pour définir mon chemin d'accès au répertoire de bibliothèque 32 bits au lieu du répertoire de bibliothèque 64 bits (lib64). Les bibliothèques du répertoire 32 bits étant incompatibles, le système a été remplacé par l'ancienne version, qui était obsolète.

L'utilisation de -L sur le chemin que je faisais référence a donné des avertissements sur le "saut de libstdc ++ incompatible. Donc, lors de la recherche de -lstdc ++". C’est ce qui m’a aidé à résoudre finalement le problème.

0
Cathy