首页 > saving > gcc和g++到底有什么区别?

gcc和g++到底有什么区别?

2007年8月9日 hufey

今天编译一个很普通的C++程序,如下:


1  #include 《iostream》
2
3  void function1(){
4     for(int i=0;i<1000000;i++);
5  }
6
7  void function2(){
8     function1();
9     for (int i=0;i<2000000;i++);
10 }
11
12 void function3(){
13    function1();
14    function2();
15    for (int i=0;i<3000000;i++);
16       function1();
17 }
18
19 int main(){
20    for(int i=0;i<10;i++)
21    function1();
22
23    for (int i=0;i<5000000;i++);
24
25    for(int i=0;i<10;i++)
26       function2();
27       for(int i=0; i<13;i++);
28          {
29          function3();
30          function2();
31          function1();
32          }
33 }

编译命令行: gcc -pg -o sample3 sample3.cpp
结果是:
/tmp/cck9wDpZ.o: In function `__static_initialization_and_destruction_0(int, int)':
sample3.cpp:(.text+0x12c): undefined reference to `std::ios_base::Init::Init()'
/tmp/cck9wDpZ.o: In function `__tcf_0':
sample3.cpp:(.text+0x183): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cck9wDpZ.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

以前因为工作内容的关系,没用gcc编译过c++的代码。或者是其他同事已经写好了Makefile,没怎么关心过这个问题。不过以前和一个同事争论过,他说c++的代码必须要用g++编译,否则编译不过去,因为gcc是编译c code的,而g++才是编译c++的。我当时就知道肯定不对,因为gcc是gnu compiler collection的缩写,而不是gnu C compiler。理论上所有的gcc支持的不同语言的代码都可以用gcc编译(如果我错了请纠正我)。当时没空争论这个问题,结果今天自己碰上了
。google了一下,又试了试,确实用g++可以编译过去

g++ -pg -o sample3 sample3.cpp
不服不服,继续尝试发现用gcc也可以,不过要加上指定的标准c++库
如下:

gcc -pg -o sample3 sample3.cpp -lstdc++
所以,gcc是可以编译c++ 代码的,g++不过是隐含链接某些库

分类: saving 标签:
本文的评论功能被关闭了.