GCC
参数 | 说明 |
---|---|
-ansi | 依据ANSI标准 |
-c | 跳过连接步骤直接生成目标文件(.o) |
-g | 添加gdb调试信息到程序,调试程序时使用。 |
-m 类型 | 根据给定CPU类型优化代码 |
-o 文件名 | 生成可执行文件 |
-O [级别] | 指定优化级别0~3,越大程度越高,默认0 |
-S | 跳过汇编和连接阶段,并保留汇编代码(.s)文件 |
-v | 产生尽可能多的输出信息 |
-w | 忽略警告信息 |
-W | 产生比默认警告更多的警告信息 |
-E | 产生预处理(.i)文件 |
-I dir | 指定头文件搜索路径 |
-L dir | 库文件搜索目录 |
-static | 连接静态库 |
-l库名 | 连接库文件 |
-Wall | 发出所有告警信息 |
-werror | 告警信息转为错误信息,有警告就停止编译 |
linux下函数库的命名规范:
lib+库名+.a/.so
.a:静态库
.so:共享库
gcc使用库时要用-l参数
gcc x.c -o x.out -l库名 (l和库名之间没有空格)
-L dir指定库文件搜索路径
生成库文件
静态库
静态库也称为归档库(archive),以.a结尾的文件。
如何创建静态库:
- 需要原程序 x.c x.h
- 使用gcc -c 编译成.o文件
- 使用ar命令创建静态库。 ar crv lib库名.a 所有.o文件
- 使用库时,include头库中函数声明的文件
- 编译时gcc -l参数指定库
共享库
共享库在运行时连接,以.so结尾的文件
gcc 源文件列表 -fPIC -shared -o lib库名.so