使用gcc

时间:2015-12-25 16:15:57

标签: c++ c++11 gcc

好吧,我偶然做了,使用gcc而不是g ++编译.cpp

但我实际上想要逐行了解控制台输出,如果它有任何意义。

struct a{
   int pointer;
   int  rollno;
};

struct a student,*studentref;
studentref = &student;
studentref->rollno = 141; 
studentref->pointer = 8;

cout<<studentref->rollno<<") : "<<studentref->pointer<<endl;

使用gcc structpointers.cpp -o structp编译此代码会得到以下输出:

sourab@sourab:/home/gbear/coding/learningds$ gcc structpointers.cpp -o structp
/tmp/ccXrq1Cv.o: In function `main':
structpointers.cpp:(.text+0x2e): undefined reference to `std::cout'
structpointers.cpp:(.text+0x33): undefined reference to `std::ostream::operator<<(int)'
structpointers.cpp:(.text+0x38): 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> >&)'
structpointers.cpp:(.text+0x40): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccXrq1Cv.o: In function `__static_initialization_and_destruction_0(int, int)':
structpointers.cpp:(.text+0x6e): undefined reference to `std::ios_base::Init::Init()'
structpointers.cpp:(.text+0x7d): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

2 个答案:

答案 0 :(得分:3)

g++文件上调用gcc.cpp之间最令人震惊的区别是g++自动链接到C ++标准库,而gcc执行不;您看到的所有错误都是链接器错误,缺少对C ++标准库提供的内容的引用。

(请注意,这不是唯一的差异;有关详细信息,请参阅this question

答案 1 :(得分:0)

g ++和gcc是GNU编译器集合的编译器驱动程序,它们具有后端,这些后端在编译模式时自动连接。 错误如“

structpointers.cpp:(.text+0x2e): undefined reference to `std::cout'

是链接错误,因为你已经使用gcc来编译cpp,所以没有专门针对cpp的标准库,所以它找不到像std :: cout等语法。

您还可以参考:compiling with g++