g++/gcc编译流程

匿名 (未验证) 提交于 2019-12-03 00:19:01

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。
g++c++的命令,以.cpp为主,对于c语言后缀名一般为.c
这时候命令换做gcc即可。

本质上都是gnu编译器集合中的俩个部分

其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。



下面以Test.cpp为例:

命令: `g++ Test.cpp`

功能:生成默认为a.exe的文件,这个过程包含了编译和链接。
再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的是.exe文件。



要输出Test.exe的话可以用:g++ -o Test.exe Test.cpp
-o命令是输出的意思,这样就输出了Test.exe


gcc/g++在执行编译工作的时候,总共需要以下几步:

命令:g++ -E Test.cpp > Test.i

功能:输出预处理后的文件,linux下以.i为后缀名。

只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 。

这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的库文件。
用编辑器打开Test.i会发现有很多很多代码,你只需要看最后部分就会发现,预处理做了宏的替换,还有注释的消除,可以理解为无关代码的清除。

命令:g++ -S Test.cpp

功能:会生成Test.s文件,.s文件表示是汇编文件,用编辑器打开就都是汇编指令。

命令:g++ -c Test.cpp
功能:.oGCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义。
二进制机器码

命令:g++ Test.o -L F:\vs2008\VC\include\iostream
功能:将.o文件与所需的库文件链接整合形成.exe.exec可执行文件。
-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同



在上面各个步骤中你可以用-o命令输出你自己想要的各种名字。比如最后一个命令,用下面的输出Test.exe
g++ Test.o -o Test -L F:\vs2008\VC\include\iostream

文章来源: g++/gcc编译流程
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!