gcc执行编译要经过四个过程
1.预处理, 2.编译, 3.汇编, 4.链接
其中用于控制编译的整个流程,常用选项如下:
1.-E 对源文件进行预处理
头文件展开,宏替换,条件编译
主要是执行“#”开头的代码,比如#include,(include后的库文件有时候用< >,有时候用" ",他们的区别是,< > 一般是系统自带的文件,它会到系统的头文件目录里寻找库文
件,“ ”一般是自己写的库文件,它在当前目录里寻找库文件,如果找不到,就到系统的头文件中查找)
2.-S 对原文件进行编译
该过程的作用是将目标文件转化成汇编语言(文件)
3.-o file 输出目标文件
链接作用:把所有文件链接成可执行文件
函数库一般分为静态库和动态库两种。静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件 了。其后缀名一般为”.a”。动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以 节省系统的开销。动态库一般后缀名为”.so”,如前面所述的libc.so.6就是动态库。gcc在编译时默认使用动态库。
4.-v 显示编译阶段的命令