部分gcc常用的选项
- -E 预处理
不编译、不汇编、不链接
- -S 编译
不汇编、不链接
- -c 编译+汇编
不链接
- -o 生成输出文件
- -w 不产生任何警告
- -s 类似于strip,删除符号表等内容(删掉调试信息和符号表)
- -g 编译后具有调试信息,反汇编可以查看源码
- -W 开启警告选项:-Wall / -Wextra
- -L 指定链接库所在目录(大爱)
- -I 指定头文件所在目录(小埃尔)
- -l 指定链接库名称
- -Wp,
<opt>
将选项<opt>
传给cpp - -Wa,
<opt>
将选项<opt>
传给as - -Wl,
<opt>
将选项<opt>
传给ld - -Xlinker 和-Wl
<opt>
类似 - -M 生成文件相关依赖信息,另外一个-MD、-MM、-MMD
- -fPIC 位置无关代码
- -static 强制以静态库的方式进行链接
- -shared 生成so时进行使用
- -v 打印编译信息
优化
-O0 不优化
-O1 尝试减少代码体积和代码运行时间
-O2 执行几乎所有支持的操作(不包括空间和速度之间权衡的优化),编译时间较长。
-Os 优化代码尺寸(-O2.5),缓存小、磁盘空间机器紧张可以使用,可能产生问题,不推荐
-O3 产生更大更消耗内存的二进制。gcc3.x中并不标-O2快多少。gcc4.x不推荐使用