1、GCC 编译器在编译一个C语言程序时需要经过以下 4 步:
将C语言源程序预处理,生成.i文件
预处理后的.i文件编译成为汇编语言,生成.s文件
将汇编语言文件经过汇编,生成目标文件.o文件
将各个模块的.o文件链接起来生成一个可执行程序文件
2、常用编译命令选项
1 无选项
#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。
这里未指定输出文件,默认输出为a.out。
2 选项 -o
#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。
-o选项用来指定输出文件的文件名。
3 选项 –E 预处理指定的源文件,不进行编译。将C语言源文件进行预处理,但是并不编译该程序。对于一般的预处理问题,可以使用这个选项进行查看,例如,宏的展开问题、文件的包含问题等。
#gcc -E test.c -o test.i
作用:将test.c预处理输出test.i文件。
4 选项 –S 将C语言源文件编译为汇编语言,但是并不汇编该程序。
#gcc -S test.i
作用:将预处理输出文件test.i汇编成test.s文件。
5 选项 –c 编译、汇编指定的源文件,但是不进行链接
#gcc -c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
6 选项 -o
#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。
7 选项-O
#gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
8. 选项-I directory
用法:指定 include 包含文件的搜索目录
9 选项-g 生成调试信息,该程序可以被调试器调试
10 选项 –L directory 指定库文件目录