在 Linux 上使用 gcc/g++ 编译 C/Cpp 程序。
源文件到可执行程序
预处理
展开头文件/宏替换/去掉注释/条件编译,生成
.i
文件。编译
检查语法,生成汇编文件
.s
。汇编
汇编代码转换机器码,生成
.o
文件。链接
将上一步生成的以及一些依赖的库链接起来生成可执行程序。
使用 gcc 编译
1 | gcc Test.c --save-temps -o Test # 可保留C程序编译过程中产生的临时文件 |
step by step
预处理
1
gcc –E Test.c –o Test.i
编译
1
gcc –S Test.i –o Test.s
汇编
1
gcc –c Test.s –o Test.o
链接
1
gcc Test.o –o Test
一些参数
-g
编译时候保留调试信息,如果要使用 gdb 调试程序,必须保留调试信息。
-O
优化级别,-O0
到 -O3
,代表4 个不同的优化级别。
一般业界公认的是O2,O3比较激进,-O1为缺省值。如果为了调试,最好用 O0。