Undefined Symbol ___gxx_la personnalité_v0 sur le lien
J'ai été faire ce undefined symbol bâtiment avec cette ligne de commande:
$ gcc test.cpp
Undefined symbols:
"___gxx_personality_v0", referenced from:
etc...
test.cpp est simple et doit construire amende. Quel est le deal?
- pouvons-nous plx voir le code s'il n'est pas trop long?
Vous devez vous connecter pour publier un commentaire.
Utilisation
au lieu de cela, puisque c'est du code c++.
Ou, si vous vraiment souhaitez utiliser
gcc
, ajouter-lstdc++
à la ligne de commande, comme suit:De course
md5
contre laa.out
produites dans chaque scénario, nous montre que c'est la même sortie.Mais, ouais,
g++
fait probablement de votre monde un simple.EXTRA_CFLAGS = -lstdc++
dans le MakefileLa
.cpp
extension provoquegcc
pour compiler votre fichier en tant que fichier C++. (Voir la GCC docs.)Essayez de compiler le même fichier, mais le renommer pour avoir un
.c
extension:Alternativement, vous pouvez spécifier explicitement la langue en passant
-x c
pour le compilateur:Si vous exécutez
nm test.o
sur ces versions en langue, vous remarquerez que___gxx_personality_v0
n'est pas répertorié comme un symbole.(Et si vous exécuter la même commande sur un fichier de l'objet généré avec
gcc -c test.cpp -o test.o
, le___gxx_personality_v0
symbole est présent.)Juste au cas où quelqu'un a le même problème que moi: L'extension de fichier doit être un
.c
pas un.C
(gcc est sensible à la casse).Eu le même problème, mais une solution différente:
Code C++ statique dans la bibliothèque de liaison, et d'être référencé par un .m de fichier. Renommer le .m fichier .mm fixe le problème.