gcc在c++11编译中给出垃圾

gcc giving garbage on c++ 11 compilation

本文关键字:c++11 编译 gcc      更新时间:2023-10-16

我敢打赌这个问题的解决方案很简单,但我想知道为什么我不能让gcc编译我的c++11代码。

编辑:删除代码以简化问题。任何程序都会复制相同的错误。

我使用的是gcc编译器4.7,如下所示:https://code.google.com/p/mingw-builds/downloads/detail?name=x86_64-mingw32-gcc-4.7.0-release-c%2Cc%2B%2Fortran sjj.zip&can=2&q=。

我用来编译的命令只是gcc Swamp.cpp -std=c++11。如果我使用gcc Swamp.cpp进行编译,那么代码只会抱怨c++11的东西。

在我看来,编译产生的错误是垃圾:

 C:UsersOwnerDocumentsGitHubCompetitiveProgrammingTestProjectCodeProject>gcc Swamp.cpp -std=c++11
 C:UsersOwnerAppDataLocalTempccRKn67x.o:Swamp.cpp:(.text+0x67): undefined reference to `__gxx_personality_sj0'
 C:UsersOwnerAppDataLocalTempccRKn67x.o:Swamp.cpp:(.text+0x30e): undefined reference to `__gxx_personality_sj0'
 C:UsersOwnerAppDataLocalTempccRKn67x.o:Swamp.cpp:(.text+0x72e): undefined reference to `__gxx_personality_sj0'
 C:UsersOwnerAppDataLocalTempccRKn67x.o:Swamp.cpp:(.text+0x78a): undefined reference to `std::cout'
 …etc…

使用GCC编译C++代码有两个不同的命令,gccg++。区别实际上只是g++自动与C++运行库链接,而gcc没有。

这些错误都是因为GCC C++运行库中缺少符号,与您使用的C++11功能无关。要修复错误,您需要手动链接到C++运行库,或者使用g++命令自动处理它。