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!
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.
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.
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.
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.
J'ai la même erreur. Voici comment cela a fonctionné pour moi:
A parfaitement fonctionné!
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.
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
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.
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:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Dites que la version est 3.4.19
.[4.8.3, 4.9.0)
.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.
Je viens d'utiliser -static-libstdc ++ lors de la construction. w/que, je peux exécuter le a.out
g++ test.cpp -static-libstdc++
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.
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.
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.
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
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.
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'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.