链接上未定义的符号___gxx_personality_v0

我已经通过以下命令行构建了这个未定义的符号:


$ gcc test.cpp

Undefined symbols:

  "___gxx_personality_v0", referenced from:

  etc...

test.cpp很简单,应该可以正常运行。怎么了


互换的青春
浏览 1031回答 3
3回答

ABOUTYOU

采用g++ test.cpp相反,因为这是c ++代码。或者,如果您确实要使用gcc,请添加-lstdc++到命令行,如下所示:gcc test.cpp -lstdc++在每种情况下md5针对a.out产生的结果运行都会显示出相同的输出。但是,是的,g++可能会使您的世界变得更简单。

波斯汪

该.cpp扩展名导致gcc将您的文件编译为C ++文件。(请参阅GCC文档。)尝试编译相同的文件,但将其重命名为具有.c扩展名:mv test.cppgcc test.c另外,您可以通过传递-x c给编译器来明确指定语言:gcc -x c -c test.cpp -o test.o如果您nm test.o在这些C语言版本上运行,您会注意到它___gxx_personality_v0没有以符号形式列出。(并且,如果您对用生成的目标文件运行相同的命令,则会gcc -c test.cpp -o test.o显示___gxx_personality_v0符号。)

DIEA

遇到相同的问题,但解决方案不同:静态库中的C ++代码被链接起来,并由.m文件引用。将.m文件重命名为.mm可以解决此问题。
打开App,查看更多内容
随时随地看视频慕课网APP