Linux之gcc与g++编译器

时间:2023-01-04 09:10:46

1.gcc编译器

  gcc编译器开发初期定位为C编译器(GNU C Compiler),但随着时间的发展gcc编译器能够支持多种语言。

1.1 gcc编译器的使用

  假如我们已经有了.c文件名称为Hello.c,可以使用下面的语句编译该文件:

$ gcc Hello.c

该语句执行成功后,会在当前目录下生成可执行文件名称为a.out(默认),我们可以使用下面的语句来运行该可执行文件:

$ ./a.out

当然我们不想使用默认的名称,这样不够直观,我们可以在使用gcc进行编译时指定其可执行文件名:

$ gcc -o hello Hello.

默认的a.out文件名就被替换成了“hello”;

 

1.2 编译有关选项

  在很多情况下程序员不是要一个可执行文件这么简单,一些场合需要目标代码,有些场合需要汇编代码等等,下面列举出编译相关选项:

  -c  只激活预处理,编译和汇编,生成扩展名为.o的目标代码文件;

  -S  只激活预处理和编译,生成扩展名为.s的汇编代码文件;

  -E  只激活预处理,并将结果输出至标准输出

  -g  为调试程序生成相关信息(如gdb)

 

1.3 优化选项

  gcc提供了3个级别的优化给程序员进行选择,从低到高依次是-O1,-O2和-O3。从理论上来将-O3能生成执行效率最高的代码,然而优化程度越高风险越高,一般情况下-O2使用较多。事实上三个级别的优化是对多种具体优化的打包,具体的可以查看gcc官方手册,另外可以使用-march选项,为特定的CPU编译二进制代码,但不是特殊场合不要使用-march选项。

$ gcc -O2 -o hello Hello.c

 

2.g++编译器

  gcc虽然也能编译C++源文件,但是其不能自动和C++库进行连接,所以通常使用g++来完成C++源文件的编译和链接

g++编译器的使用

  g++编译器的使用和gcc基本一致。