gcc在c++11编译中给出垃圾
gcc giving garbage on c++ 11 compilation
我敢打赌这个问题的解决方案很简单,但我想知道为什么我不能让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++代码有两个不同的命令,gcc
和g++
。区别实际上只是g++
自动与C++运行库链接,而gcc
没有。
这些错误都是因为GCC C++运行库中缺少符号,与您使用的C++11功能无关。要修复错误,您需要手动链接到C++运行库,或者使用g++
命令自动处理它。
相关文章:
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 编译器不会使用 -std=c++11 编译智能指针
- 如何在 C++11 编译时构建具有递增值的整数成员的结构序列
- 无法用"-std=c++11"编译《你好世界》
- 为 freebsd 11 编译 gcc4.8.5 时出错: 错误: 未知类型名称 'choke'
- 如何使用Codelite 11.0.0编译静态库
- mingw:使用 -std=c++11 编译时找不到函数
- 如何在 ubuntu 12.10 中隐藏 g++ c++11 编译警告
- 用C++14编译器而不是C++11编译时,我的性能会提高吗
- Qmake 不使用 stdc++11 编译标志
- 为什么 std::stoi 和 std::array 不能使用 g++ c++11 编译
- Makefile C++11-编译为静态库
- 代码块中的C++11编译问题
- gcc在c++11编译中给出垃圾
- 如何告诉一个库是使用C++11编译的
- 使用makefile和c++11编译时出错
- c++ 11编译时组合两个字符串的最简单方法
- 用Visual Studio 11编译的可执行文件有什么特别之处,导致这些可执行文件不能在Windows XP上执行?
- c++ 11编译时调用printf的格式字符串字面值构造
- 如何在Xcode 8下用c++ 11编译一个项目