程序编译过程如下图(图引自https://blog.csdn.net/freestyle4568world/article/details/49817799)
![](https://i-blog.csdnimg.cn/blog_migrate/e5ee6170c35ff951755b214862c79fcd.png)
1.预处理
主要动作:宏的替换,还有注释的消除,还有找到相关的库文件
命令:g++ -E Test.cpp > Test.i
只激活预处理,不生成文件,需要把它重定向到一个输出文件里 。
2.编译
主要动作:将预处理后的文件转换为汇编文件,里面为汇编指令
命令:g++ -S Test.cpp
会生成Test.s文件
3.汇编
主要动作:将汇编文件转换为目标文件
命令:g++ -c Test.cpp
生成.o文件,即目标文件
4.链接
主要动作:将目标文件和库文件整合为可执行文件
命令:g++ Test.o -L usr/include/iostream
-L后为库文件目录。
使用-o可以为可执行文件命名:
g++ Test.o -o Test -L usr/include/iostream
5.执行
./Test
所以通常在使用过程中,
g++ Test.cpp -o Test
./Test
两步就做完了上述工作。
g++常用命令:
-c 生成.o目标文件
-o可执行文件命名
-shared 指定生成动态链接库
-static 指定生成静态链接库
-L 要链接的库所在目录
-l 指定链接时需要的动态库,隐含命名规则,即在前加lib,在后加.a或.so确定库文件名
待补充