非常简单的程序在c ++中不起作用?

时间:2012-02-25 19:44:19

标签: c++ cout

我无法弄清楚为什么这不起作用......

我在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;

};

6 个答案:

答案 0 :(得分:72)

gcc main.cpp -lstdc++

g++ main.cpp

答案 1 :(得分:18)

gcc是C编译器,您需要使用g++(或使用gcc和其他人指出的选项-lstdc++。如果您在使用g++之后没有打印任何内容,则必须在构建之后执行编译后的二进制文件(即g++完成时)。

main.cpp中:

#include<iostream>

int main(){

std::cout<<"test "<<std::endl;
return 0;

};

构建

g++ main.cpp -o main

执行:

./main

输出:

test 

答案 2 :(得分:4)

这是一个C ++代码,所以你应该使用g ++而不是gcc。此外还不需要#include<stdio.h>

答案 3 :(得分:2)

我认为您错误地使用C编译器命令而不是C ++编译器命令进行链接。试试这个:

  

g ++ test.cc -o test

答案 4 :(得分:-1)

我认为这个问题的根本问题是二进制名称“test”实际上已经是linux系统的一部分了。输入“man test”会显示测试二进制文件的手册。我有同样的问题。只需将二进制文件编译为“test”以外的其他内容即可解决。

答案 5 :(得分:-4)

编译器以空格分隔。在所有关键字和&lt;&lt;之间加一个空格。所以cout&lt;&lt;应该是cout&lt;&lt;与&lt;相同