格式: gcc [option] [filename]
-c 只编译生成.o文件
-o output_filename
-O 优化程序
-O2 优化程度更深
-g 产生代码调试信息
-Wall 所有警告
-Werror 只报error
-w 不产生任何警告
-v 输出gcc工作的详细过程
-DMACRO 相当于#define MACRO
-I dirname (大写的i)用" "的头文件若在当前目录没有,则到dirname中找
-L dirname 首先到dirname中寻找所需库文件(默认在预设路径找,如/usr/lib)
-lname 在连接时装载名字为"libname.a"的函数库
如: -lm 表示连接系统的数学库libm.a,所有与浮点运算相关的都必须用数学库!
-static 库分动态和静态,动态通常以.so为后缀,静态通常以.a为后缀
静态库: 把用到的函数放在程序里,
动态库: 在程序内留下标记,当程序执行是先载入这个库
linux下进行连接的缺省操作是首先连接动态库
分段编译:
程序编译的流程:
- 预处理: 展开宏,加入"#include "包含的内容,生成预编译文件 **.i
- 汇编: 生成汇编源文件 **.s
- 编译: 生成目标文件 **.o
- 链接: 将目标代码链接成可执行文件(放到和合适的地方)
相关选项:
-E 预编译,生成**.i
-S 汇编, 生成.s
-c 编译, 生成.o