在C ++中定义字符串会导致编译器错误

时间:2019-03-10 07:28:14

标签: c++ gcc compiler-errors

我正在尝试通过GCC和文本文件学习一些C ++“老式方式”。我遇到了这个问题:

#include <string>
int main(int arcg, char* argv[])
{
    std::string test = "test";
}

运行gcc main.cpp时出现此错误:

/tmp/ccQ34IRS.o: In function `main':
main.cpp:(.text+0x27): undefined reference to `std::allocator<char>::allocator()'
main.cpp:(.text+0x3e): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
main.cpp:(.text+0x4a): undefined reference to `std::allocator<char>::~allocator()'
main.cpp:(.text+0x56): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x7b): undefined reference to `std::allocator<char>::~allocator()'
/tmp/ccQ34IRS.o:(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

如果我删除了std::string行,使得main为空,那么GCC会对其进行编译。搜索错误导致我进入this SO question,但是添加#define _GLIBCXX_USE_CXX11_ABI 0并没有帮助。

$ gcc --version
gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0

编辑:好的,您应该使用g++来编译C ++代码,但是gcc也可以做到吗?这是否意味着这个问题有多个值得讨论的解决方案,不应该关闭吗?而且,如果真的经常问到这个问题,为什么在询问时没有可以链接的公开副本?

0 个答案:

没有答案