我打赌这个问题的解决方案很简单,但我想知道为什么我不能让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 %2B%2Cfortran-sjlj.zip&can = 2&q =.
我用来编译的命令很简单gcc Swamp.cpp -std=c++11.如果我编译,代码只会抱怨c ++ 11的东西gcc Swamp.cpp.
在我看来,编译给出的错误是垃圾:
C:\Users\Owner\Documents\GitHub\CompetitiveProgramming\TestProject\CodeProject>gcc Swamp.cpp -std=c++11
C:\Users\Owner\AppData\Local\Temp\ccRKn67x.o:Swamp.cpp:(.text+0x67): undefined reference to `__gxx_personality_sj0'
C:\Users\Owner\AppData\Local\Temp\ccRKn67x.o:Swamp.cpp:(.text+0x30e): undefined reference to `__gxx_personality_sj0'
C:\Users\Owner\AppData\Local\Temp\ccRKn67x.o:Swamp.cpp:(.text+0x72e): undefined reference to `__gxx_personality_sj0'
C:\Users\Owner\AppData\Local\Temp\ccRKn67x.o:Swamp.cpp:(.text+0x78a): undefined reference to `std::cout'
…etc…
Run Code Online (Sandbox Code Playgroud)
有用于编译的C++代码与GCC两个不同的命令,gcc和g++.差别实际上只是g++与C++运行时库自动链接,而gcc不是.
错误都是关于GCC C++运行时库中缺少的符号,与您使用的C++ 11功能无关.要修复错误,您需要手动自己链接C++运行时库,或使用g++命令自动处理它.