LinuxCC++编译器ccgccg++c++区别
使⽤Linux系统的编译c或者c++的⼈,都知道Linux系统的编译器有cc\gcc\g++\c++,但是他们之间到底是什么关系呢?
⾸先到系统的/usr/bin路径下,使⽤命令:ll | grep cc,可以看到如下:
由此,可以知道LInux系统下,cc就是gcc。
linux下gcc编译的四个步骤
关于c++和g++也都在/usr/bin路径下,查看c++和g++的信息如下:
两个⽂件的⼤⼩是⼀样的,再进⼀步通过命令:diff c++ g++, 结果如下:
两个⽂件的内容也是⼀样的。所以,c++就是g++。⾄于为什么是两个⽂件,⽽不是使⽤连接,这个就不知道了。
那么看上去四个编译器,现在本质上只剩下两个了,也就是gcc和g++。
通过名字就很容易猜想到:gcc是编译c语⾔的,g++是编译C++语⾔的。其实⾮也。你也可以通过gcc -xc++ -lstdc++ -shared-libgcc也编译c++源代码。gcc和g++其实只是个外壳,在编译的时候,最终决定是调⽤后台的cc1还是cc1plus。编译的语⾔是可以通过编译选项-x来指定。
那么gcc和g++主要的区别是:编译时⾃动连接的库的不同。g++会⾃动连接std c++的库,⽽gcc不会。所以,使⽤gcc编译c++的代码,如果c++的代码中使⽤了std的类,例如:vector,会出现连接出错。
g++还有⼀个不同就是编译cpp⽂件时,会有⼀些预定义的宏:
#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern
总之,不管如何,既然已经分为gcc和g++了,尽量⽤gcc编译C语⾔程序,使⽤g++编译c++程序;如果有的程序是两种语⾔混合的,那就只能使⽤g++了,对于c语⾔,可以使⽤extern “C” 来标识,让编译把他当做c语⾔来编译即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。