Comment réparer: /usr/lib/libstdc++.donc.6: la version " GLIBCXX_3.4.15' non trouvé
Donc, je suis maintenant désespérée de trouver une solution pour ce. Je suis de la compilation d'une bibliothèque partagée .ainsi, dans Ubuntu 32 bits (Ont essayé de le faire sous Debian et Ubuntu 64 bits, mais aucune n'a fonctionné non plus)
Je reçois: /usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15' not found
chaque fois que j'essaie de charger mon plugin.
Voici comment j'obtiens cette erreur:
- Installez la dernière version d'Ubuntu 32 bits
- sudo apt-get install build-essential
- Compiler & charger mon plugin (.donc)
Voici quelques liens que j'ai trouvé et essayé, mais aucun n'a fonctionné pour moi:
(Ma vieille question: j'ai de toute façon j'ai corrigé quelques jours après la publication de cette question, mais je ne me souviens plus exactement comment je l'ai fait)
Un autre utilisateur avec le même problème
Je vois certaines personnes, fixé par le déménagement de la bibliothèque libstdc++(je pense) dans un répertoire, puis en pointant du doigt ou en reliant idk quoi ce répertoire, mais cela me laisse perplexe.
Quelqu'un connais une solution?
(Edit:)
- En cours d'exécution: strings /usr/lib/libstdc++.so.6 | grep GLIBC
dans le terminal me donne: strings '/usr/lib/libstdc++.so.6': No such file
. Pourrait-il être le problème? Et si oui, comment puis-je installer cette bibliothèque?
(Edit2:) tout le monde sait de une solution?
(Edit3) a Toujours pas de solution. est-il possible de voir sur qui distro une bibliothèque partagée a été compilé? Je sais que j'ai une fois compilé cette même bibliothèque, il y a un moment, mais ne me souviens pas!!
(Edit4) ldd my_lib_.so
me donne:
linux-gate.so.1 => (0xb77d7000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000)
/lib/ld-linux.so.2 (0xb77d8000)
ldd program_im_loading_so_into
me donne:
linux-gate.so.1 => (0xb77d8000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000)
/lib/ld-linux.so.2 (0xb77d9000)
de course strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX
me donne:
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
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
et enfin, voici ma version de gcc:
`gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)`
- Si vous exécutez "nm" à l'encontre de votre bibliothèque, qu'il ne montre aucune dépendance sur GLIBC3.4.15 ? Avez-vous essayez d'installer âgées libstdc++, construit avec les anciennes version de la glibc?
- Hey, j'ai obtenu ce lors de l'exécution nm:
U_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15 U _ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15
et je viens d'installer toutes les bibliothèques(qui se trouve dans le ubuntu app manager) se terminant par 6.x.x et même de les installer libstdc++5, mais il ne fonctionne toujours pas. Reçois la même erreur - Peut-être que vous avez quelques copie supplémentaire du libstdc++ dans des répertoire? Sur debian, vous devriez l'avoir dans /usr/lib/i386-linux-gnu
- Salut. J'ai couru
locate libstdc++.so.6
et le suivant:/usr/lib/i386-linux-gnu/libstdc++.so.6
et/usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
. Je suppose que cela signifie qu'il n'y a pas d'autre libstdc++ dans des répertoires? - Pourriez-vous ajouter les résultats de
ldd your.so
,ldd program_youre_loading_so_into
etstrings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX
et votre version de gcc? - Êtes-vous lier votre plugin avec certains fichiers de l'objet, qui ont été compilées ailleurs? Aussi, êtes-vous la modification de l'environnement en aucune façon avant d'essayer de charger le plugin? Êtes-vous sûr que vous avez utilisé le même compilateur pour compiler le plugin et le programme qui est en cours de chargement il? Qu'est-ce que la sortie de
LD_DEBUG=all program_im_loading_so_into
? - C'est une question de la FAQ: gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths
Vous devez vous connecter pour publier un commentaire.
Lier statiquement à libstdc++ avec
-static-libstdc++
gcc avec l'option.J'ai résolu ce problème en installant:
sudo apt-get install libstdc++6
Dans mon cas, je n'ai rencontré ce problème après l'installation de MongoDB 3.0.1
Il suffit d'installer la dernière version du référentiel par défaut:
add-apt-repository
: $ sudo apt-get install software-properties-commune python-software-properties ubuntuforums.org/showthread.php?t=1971357ce problème peut être résolu par l'installation de la dernière libstdc++.
Ci-dessus, vous avez mentionné avoir de la compilation de votre dans le cadre de votre procédure pour reproduire, mais alors ci-dessous vous faites une modification dire,
Si oui ou non vous avez compilé ce sur la même distro, et même une version différente de la même distro est un détail important, en particulier pour des applications c++.
En les reliant à des bibliothèques c++, y compris libstdc++ peut avoir des résultats mitigés, pour autant que je peux dire. Voici une question à propos de recompiler avec les différentes versions de c++.
avons-nous besoin de recompiler les bibliothèques c++11?
En gros, si vous avez compilé en c++ sur une autre distro (et peut-être différente version de gcc), cela peut être la cause de vos ennuis.
Je pense que vous avez deux options:
Si quelqu'un a le même problème que j'ai eu - assurez-vous que vous n'installez pas d'Ubuntu 14.04 repo sur une 12.04 machine, il donne à cette même erreur. La réinstallation de la bonne référentiel fixe le problème.
Cela a fonctionné pour moi:
Cette friandise est venu de @kerin (observation à la condition ci-dessus):
À partir de ce lien:
L'erreur que j'ai été mise a mentionné que libstdc++.donc.6 est à venir à partir de /usr/lib64/, mais ce n'est pas la bibliothèque, je l'ai lié à l'encontre de! Le message ressemblait:
Je n'ai vérifier que LD_LIBRARY_PATH avait le répertoire (et qu'il a été le premier chemin d'accès). Pour une raison quelconque à l'exécution, il a été toujours à la recherche à /usr/lib64/libstdc++.donc.6.
J'ai pris les conseils de l'article ci-dessus et copié à la bibliothèque libstdc++.donc.6 d'où j'ai fait un lien dans le répertoire avec mon exécutable, a couru à partir de là, et cela a fonctionné!
Peut-être la réponse à cette question est d'utiliser ici aussi:
comment trouver libstdc++.donc.6: qui contiennent GLIBCXX_3.4.19 pour RHEL 6?