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!
apt-get
solution basée sur ce problème est décrite ici: superuser.com/questions/310809/…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:
Si la liaison statique dans la bibliothèque est une option, c'est probablement la solution la plus rapide.
la source
J'essayais de me mettre au travail (ce qui nécessite également la version 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à-bas lorsque 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:export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
J'ai pu me mettre au travail après avoir fait cela. J'espère que cela est utile à quelqu'un.
la source
LD_LIBRARY_PATH
les affectera. ils seront tous liés à la nouvelle bibliothèque, à la fin la plupart des binaires ne fonctionnent pas: tels quels
grep
, ....: je reçois:ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
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:
J'ai trouvé qu'il comprend 3.4.15
donc mon système a les dernières bibliothèques.
le problème vient de matlab lui-même, il appelle sa propre libstdc ++. so.6 de
{MATLAB}/bin
donc, remplacez-le simplement par la bibliothèque système mise à jour.
la source
{MATLAB}/bin
le fichier dans/usr/lib/
, puis redémarrer matlab. Cela fonctionne dans Matlab 2010b sur Fedora 14 x64.J'ai eu la même erreur. Voici comment cela a fonctionné pour moi:
A parfaitement fonctionné!
la source
Pour cette erreur, j'ai copié la dernière version de libstdc ++. So.6.0.17 d'un autre serveur, j'ai supprimé le lien logiciel et l'ai recréé.
1. Copiez le fichier libstdc ++. So.6.0.15 ou plus récent d'un autre serveur sur le système concerné.
Dans mon cas, SUSE linux 11 SP3 avait le dernier.
2. rm libstdc ++. So.6
3. ln -s libstdc ++. So.6.0.17 libstdc ++. So.6 (sous le répertoire / usr / lib64).
nJoy
la source
Je viens de faire face à un problème similaire lors de la construction de la version 3.7 de LLVM. vérifiez d'abord si vous avez installé la bibliothèque requise sur votre système:
Ajoutez ensuite l'emplacement trouvé à votre variable d'environnement $ LD_LIBRARY_PATH.
la source
Parfois, vous ne contrôlez pas la machine cible (par exemple, votre bibliothèque doit fonctionner sur un système d'entreprise verrouillé). Dans ce cas, vous devrez recompiler votre code en utilisant la version de GCC qui correspond à leur version GLIBCXX. Dans ce cas, vous pouvez effectuer les opérations suivantes:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Supposons que la version soit3.4.19
.[4.8.3, 4.9.0)
.la source
gcc version 4.8.1, l'erreur ressemble à:
J'ai trouvé le libstdc ++. So.6.0.18 à l'endroit où je me suis conformé à gcc 4.8.1
Alors j'aime ça
problème résolu.
la source
Je les ai extraits d'un RPM ( RPM pour libstdc ++ ) puis:
Pour que le système recherche les bibliothèques dans le répertoire courant. 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.
la source
J'ai eu un problème similaire, et je l'ai résolu en reliant statiquement
libstdc++
le programme que je compilais, comme ceci:au lieu de l'habituel
Il peut y avoir des problèmes avec cette solution liés au chargement des bibliothèques partagées au moment de l'exécution, mais je n'ai pas suffisamment examiné le problème pour commenter.
la source
Bogue avec GLIBCXX_3.4.14 Vous devez installer une version plus récente de GCC. http://pkgs.org/download/libstdc++.so.6 allez à:
http://geeksterminal.com/how-to-install-glib-glibc/1392/
et suivez les instructions.
la source
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 utilisateur fonctionne.
la source
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. Puisque je ne suis pas un administrateur système pour nos systèmes Linux, je ne peux pas simplement changer / usr / lib ou plusieurs des autres suggestions ci-dessus. Je rencontrais ce problème et je l'ai finalement suivi pour 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). Comme les bibliothèques du répertoire 32 bits étaient incompatibles, le système est passé par défaut à l'ancienne version qui était obsolète.
L'utilisation de -L vers le chemin auquel je faisais référence a donné des avertissements sur le fait de "sauter la libstdc ++ incompatible. Donc lors de la recherche de -lstdc ++". C'était l'indice qui m'a finalement aidé à résoudre le problème.
la source
Même chose avec la version gcc
4.8.1 (GCC)
etlibstdc++.so.6.0.18
. J'ai dû le copier ici/usr/lib/x86_64-linux-gnu
sur ma boîte ubuntu.la source
Dans mon cas, LD_LIBRARY_PATH avait / usr / lib64 avant / usr / local / lib64. (J'étais en train de construire 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 J'ai donc corrigé LD_LIBRARY_PATH pour que l'éditeur de liens voie d'abord / usr / local / lib64.
Cela a résolu ce problème.
la source
Je viens d'utiliser -static-libstdc ++ lors de la construction. avec ça, je peux exécuter le a.out
la source
À des fins de test:
Sur la machine d'origine, recherchez la bibliothèque, copiez dans le même répertoire que l'exécutable:
Copiez ensuite cette même bibliothèque sur la machine cible et exécutez l'exécutable:
Remarque: la commande ci-dessus est temporaire; ce n'est pas un changement à l'échelle du système.
la source
J'ai eu le même problème avant, et j'ai corrigé cela, les étapes pouvaient être trouvées sur cette erreur de correction "GLIBCXX_3.4.15" sur matlab
la source