【发布时间】:2012-03-15 21:18:11
【问题描述】:
我不明白为什么这不起作用...
我在 Linux 中工作
g++ 什么都不做
gcc 打印以下内容:
/tmp/ccyg7NDd.o: In function `main':
test.cc:(.text+0x14): undefined reference to `std::cout'
test.cc:(.text+0x19): 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.cc:(.text+0x21): 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.cc:(.text+0x29): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
/tmp/ccyg7NDd.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cc:(.text+0x51): undefined reference to `std::ios_base::Init::Init()'
test.cc:(.text+0x56): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccyg7NDd.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
代码:
#include<iostream>
#include<stdio.h>
int main(){
std::cout<<"test "<<std::endl;
return 0;
};
【问题讨论】:
-
g++什么都不做是什么意思?
-
gcc是C编译器,需要使用g++。你是什么意思g++什么都不做?您必须在构建后执行已编译的二进制文件(即当g++完成时)。 -
@hmjd: g++ 是 gcc,它只是自动链接到 libstdc++。您可以通过提供
-lstdc++来获得与 gcc 相同的效果。 -
@spatara:编译器只会在出现问题时打印一些东西。像大多数 Unix 风格的程序一样,沉默意味着成功。如果你给编译器一个
-o选项,你应该找到一个名为a.out的程序,或者其他的东西;运行应该将test打印到控制台。 -
@spatara 如果你不喜欢安静,你可以传递
--verbose标志,它会告诉你比你想知道的更多。