RHEL 6.4中安装G++编译器及GCC与G++区别

来源:互联网 发布:java程序加载类的步骤 编辑:程序博客网 时间:2024/05/22 17:17

1.在虚拟机设置的CD-ROM中选择“使用ISO镜像文件”,选择你的Linux安装盘。

2.进入Linux的命令行状态,挂载镜像文件。“mount  -t  iso9660 /dev/cdrom /mnt/cdrom ”,-t iso9660是指定文件类型。mnt目录下本没有cdrom目录,可以用mkdir命令创建该目录。

3.挂载成功后,进入/mnt/cdrom/Package目录,使用ls -l |grep gcc命令筛选出和gcc有关的安装包。gcc-c++-XXXX.rpm就是G++的安装包,使用rpm -ivh gcc-c++-XXXX.rpm 命令就可以安装。可能会提示需要其他安装包,那就一步一步安装好其他依赖包即可。


附:GCC与G++编译器的区别

gcc和g++都是GNU(一个组织)的编译器。

1、对于.c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;

2、对于.cpp后缀的文件,gcc和g++都会当做c++程序。

3、编译阶段,g++会调用gcc(也就是说);

4、连接阶段,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。

 gcc可以用来编译c++但是它不会自动调用链接的c++库,你需要自己手动链接,使用如下命令: gcc -lstdc++main.cpp。g++则会自动调用链接的c++库。

gcc可以根据后缀名为.c或.cpp分别按c程序和c++程序来编译;但是g++无论是.c或.cpp都统一按c++程序来编译。
而且g++在编译的过程中,其实是调用gcc按照c++程序来编译的。即编译工作最终都是由gcc来完成的。
对于c++程序,因为gcc命令不能自动和C++程序使用的库联接,需要自己手动链接c++库,所以链接可以用g++或者gcc -lstdc++。也即是说c++程序,也可以用gcc来链接。

但是gcc在编译c程序的时候,它会自动链接c库的。


误区一:gcc只能编译c代码,g++只能编译c++代码
两者都可以,但是请注意:
1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
2.编译阶段,g++会调用gcc。对于c++代码,可以用gcc或g++来编译,二者等价的。
3 链接阶段,因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接。一般为了方便,干脆编译和链接都用g++了。这就给人一种错觉,好像cpp程序只能用g++编译链接似的。


误区二:gcc不会定义__cplusplus宏,而g++会
实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

误区三:编译只能用gcc,链接只能用g++
严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。


gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld]
来源:http://blog.csdn.net/nodeathphoenix/article/details/8264017

0 0