GLIBCXX_3.4.21 pas défini dans le fichier libstdc++.donc.6 lien avec le temps de référence
Excuses, je comprends les questions très semblables à ce qui a été demandé assez souvent, même si aucune des solutions ne semble fonctionner pour moi.Lorsque vous tentez d'exécuter n'importe quel code c++ d'une complexité raisonnable, j'obtiens l'erreur ci-dessus. Le message d'erreur complet est:
/main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
l'exécution d'un autre projet, j'ai une erreur similaire:
./main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
Je n'ai pas vraiment de problème à la compilation, car ces projets à la fois la compilation d'amende. Cela se produit lorsque j'essaie d'exécuter le fichier exécutable.
Je pensais que c'était une erreur avec mon installation gcc, donc aujourd'hui je l'ai réinstallé, même si cela n'aide pas du tout. Je ne sais pas vraiment quoi faire pour résoudre ce problème, quelqu'un peut-il offrir de l'aide?
C'est le Makefile que j'utilise pour compiler un des projets, j'ai l'impression que c'est où l'erreur peut être:
CC= g++
CFLAGS= -Wall -g -std=c++11 -lX11 -lpthread
OBJS = main.o Board_Tile.o Sliding_Solver.o
main: $(OBJS)
$(CC) -o $@ $(OBJS)
%.o : %.cc
$(CC) $(CFLAGS) -c $^
Ma version de gcc est 5.3.0, je suis sur Ubuntu 14.0.4.
- Ce qui se passe si vous essayez d'exécuter votre programme en tapant
LD_LIBRARY_PATH=/usr/local/lib ./main
au lieu de simplement./main
?
Vous devez vous connecter pour publier un commentaire.
CCAG 5.1 ou 5.2 (ne me souviens pas maintenant, google) changé ABI C++. Votre standard d'ubuntu (y compris libstdc++) est compilé avec de vieux ABI.
Votre compilateur gcc essaie d'utiliser de nouveaux ABI. Parfois cela fonctionne, la plupart du temps - pas de.
Donc, il y a 3 façons de compiler votre code:
1) décote gcc
2) ajoutez -D_GLIBCXX_USE_CXX11_ABI=0 (cmake exemple) drapeau (si vous allez de cette façon, vous devez ajouter cet indicateur pour chaque makefile ou le projet que vous construire jusqu'à
la mise à niveau d'ubuntu ou de la rétrogradation de gcc)
3) mise à niveau de Ubuntu (testé, par la voie 16.04 va de pair avec de nouvelles ABI et le nouveau gcc par défaut, j'ai dû ack-grep et supprimer le drapeau mentionné ci-dessus, de tous mes projets animal)
aussi: La compréhension de GCC 5 _GLIBCXX_USE_CXX11_ABI ou la nouvelle ABI
P. S. drôle de chose, la réponse est dans la question:
_ZNSt7__cxx11
: CXX11, si nous n'avez pas vraiment lu les messages d'erreur.before_install:
Cette solution de contournement est nécessaire pour éviter les libstdc++ erreurs lors de l'exécution de "extended" hugo avec SASS soutien.
wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg --force-all-i libstdc++6
installer:
wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
sudo dpkg -i hugo.deb
J'ai trouvé cette réponse ici, et il a travaillé pour moi