GCC 编译器在编译一个C语言程序时须要通过如下 4 步:html
.i
文件。.s
文件。.o
文件。.o
文件连接起来生成一个可执行程序文件。
GCC 编译流程以下图所示:linux
.i
文件、.s
文件、.o
文件能够认为是中间文件或临时文件,若是使用 GCC 一次性完成C语言程序的编译,那么只能看到最终的可执行文件,这些中间文件都是看不到的,由于 GCC 已经经它们删除了。
固然,可使用 GCC 选项看到这些中间文件,下节咱们会讲解 GCC 选项。学习
linux下使用gcc命令编译代码优化
gcc命令提供了很是多的命令选项,但并非全部都要熟悉.初学时掌握几个经常使用的就能够了,到后面再慢慢学习其余命令选项..net
一,经常使用编译命令选项命令行
假设源程序文件名为test.ccode
1.无选项编译连接htm
用法: #gcc test.cblog
做用: 将test.c预处理 汇编 编译 并连接造成可执行文件。这里未指定输出文件,默认输出为a.out 编译成功后能够看到生成了一个a.out的文件.在命令行输入./aout 执行程序 。 ./表示在当前目录, a.out为可执行程序文件名get
2.选项 -o
用法: #gcc test.c -o test
做用: 将test.c预处理 汇编 编译并连接造成可执行文件test 。 -o选项用来指定输出文件的文件名。输入./test执行程序
3.选项 -E
用法: #gcc -E test.c -o test.i
做用: 将test.c 预处理输出test.i 文件
4.选项 -S
用法: #gcc -S test.i
做用: 将汇编输出文件test.i 汇编成 test.s 文件
5.选项 -c
用法: #gcc -c test.s 编译输出 test.o 文件
6.选项 -0
用法: #gcc -01 test.c -o test
做用: 使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,单编译时间越长,输出./test执行程序
二 多源文件的编译方法
若是有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c 和 testfun.c]
1.多个文件一块儿编译
用法: #gcc testfunc.c test.c -o test
做用: 将testfun.c 和test.c 分别编译后 连接成 test可执行文件.
2.分别编译各个源文件,以后对编译后输出的目标文件连接
用法: #gcc -c testfunc.c //将testfun.c 编译成testfun.o
#gcc -c test.c //将test.c 编译成 test.o
#gcc -o testfunc.o test.o -o test //将testfun.o和test.o 连接成 test
以上两种方法比较,第一种方法编译是须要全部文件从新编译,而第二种方法能够只从新编译修改的文件,未修改的文件不用从新编译.
转: http://c.biancheng.net/view/663.html
https://wenku.baidu.com/view/7ae93b68a45177232f60a2c6.html