gcc/g++执行的步骤及参数简介

(本文为自己参考网上的资料整理所得,如果有所纰漏或者错误,请留言指明!谢谢!)       

       gcc可以用来编译链接.c源程序,gcc同样可以编译.cpp文件,但是不能链接.cpp文件生成可执行文件。只有g++可以编译并且链接.cpp,g++在编译.cpp文件的时候自动调用gcc进行源文件的编译。

       下面来看看gcc/g++常用的参数。


一、gcc/g++常用的参数

-IDir

指定额外的头文件搜索目录,编译器首先在Dir中寻找,然后按照常规的顺序搜索头文件。

-include file

相当于在源程序中添加头文件,相当于#include "file"。

-LDir

指定编译的时候编译器搜索的库路径。

-lLIBRARY

指定编译的时候使用的库。

-E

只激活预处理功能。

-S

只激活预编译和编译功能。

-c

只激活预处理、编译和汇编功能。

-shared

生成共享目标文件,通常用于建立共享库时使用。

-static

禁止使用共享库。

-w

不生成任何警告信息。

-Wall

生成所有警告信息。

-C

在预处理的时候不删除注释信息,一般和-E联合使用,用于分析程序。

-M

生成文件的关联信息,包含目标文件生成所依赖的所有源代码。

-MM

和上面的一样,但是忽略头文件造成的依赖关系。

-MD、-MMD

对应和-M、-MM相同,只不过将输出输入到.d文件中去。



二、gcc/g++执行的四个步骤

        g++命令在最后生成可执行文件之前经历了四个步骤,分别是预处理、编译、汇编和链接。我们通过使用g++的命令选项来查看g++命令执行过程中的步骤和每一步的生成文件。

(1)预处理器(预处理器cpp)

g++ -E main.cpp > main.i

       上面的命令只激活预处理,该过程并不生成文件,我们采用输出重定向到main.i文件中。预处理主要是语法的检查、宏替换、注释的消除和找到相应的库文件。

(2)将预处理后的文件转换成汇编语言程序(编译器egcs)

g++ -S main.i

       上面的命令执行完成后生成main.s文件,这是一个汇编语言源程序。

(3)将汇编语言源程序转换成为目标文件二进制机器码(汇编器as)

g++ -c main.i

       该命令执行之后生成main.o目标文件,这就是二进制机器码。

(4)链接目标文件生成可执行程序(链接器ld)

g++ main.o

       该命令执行之后便默认生成一个a.out的可执行文件,该过程是将main.o和所需的其他库文件链接生成可执行文件。

       上面的四个步骤就是g++将源代码生成可执行文件经历的四个步骤。

你可能感兴趣的:(gcc/g++执行的步骤及参数简介)