当c ++代码合理时,gcc编译错误

时间:2017-06-17 09:49:10

标签: c++ gcc linker-errors undefined-reference

我在这里的最后一个问题的问题似乎是gcc而不是代码(代码错误已经解决,然后我注意到了gcc的问题)。我已经制作了一个简短的你好世界计划,我知道这是可以测试的:

#include <iostream>
using namespace std;

int main()
{
cout << "Hello, World!" << endl;
}

但是gcc仍然会抛出错误。

我将文件命名为“test.cpp”并将其直接存储在我的主文件夹中,然后尝试:

gcc ./test.cpp -o Test

gcc ~/test.cpp -o Test

gcc /home/josh/test.cpp -o Test

所有3次有和没有大写“测试”。

Gcc出现以下错误:

/tmp/ccre0DEJ.o: In function `main':
test.cpp:(.text+0xa): undefined reference to `std::cout'
test.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >        (std::basic_ostream<char, std::char_traits<char> >&, char const*)'
test.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >         (std::basic_ostream<char, std::char_traits<char> >&)'
test.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccre0DEJ.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
test.cpp:(.text+0x59): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

我的问题是:如何修复Gcc?如果不是,我应该尝试其他编译器吗?

编辑:我已经尝试重新安装gcc,但仍然失败。

2 个答案:

答案 0 :(得分:1)

O.K。这是重复的(我通常可以在发布之前抓住它)。

答案在这里找到:undefined reference to 'std::cout'

我必须使用

g++ ~/test.cpp -o Test

而不是

gcc ~/test.cpp -o Test 

注意:实际上,最好使用所有警告和调试信息进行编译,即将-Wall -Wextra -g添加到g++gcc命令。详细了解Invoking GCC

答案 1 :(得分:0)

请尝试运行g ++或添加&#c; cpp标志&#39;命令,例如-lstdc ++,它将代码与c ++的标准库链接。

gcc可以编译cpp代码,但只能使用正确的标志。