Gcc和G++的编译选项

可以参考一下这里:odt笔记_20221007(gnu编译套件.odt)


宏:
-D[MACRO] 定义宏
-D[MACRO=DEFN] 定义宏
-U[MACRO] 取消定义一个宏

编译:
-I[path] 添加头文件路径
-L[path] 添加链接路径
-l[lib] 添加链接库
-E 只进行预编译
-S 编译到汇编代码
-c 编译到目标代码
-g 生成调试信息
-o 指定输出文件
-fPIC 生成位置独立代码,这是动态库的必需选项
-static 指定使用静态链接(对所有链接库生效)
-shared 生成动态链接库
--std=[c++11] 指定C++语言标准

警告:
-w 关闭所有警告
-Wall 生成所有警告
-W[address] 开启某一个警告,[]里面有很多可以填的选项,address表示使用可疑的内存地址时给出警告
-Werror 把所有的警告视为错误
-Werror=[switch] 将某一个警告视为错误,[]里面有很多可以填的选项
-Wno-error=[switch] 将某一个警告不视为错误,[]里面有很多可以填的选项
-Wextra 打开额外的警告(all里面没有包括的)
-pedantic 以ANSI/ISO C标准列出的所有警告

优化:
-O0 不进行优化
-O 优化等级1
-O1 优化等级1
-O2 优化等级2
-O3 优化等级3(最大)
-fno-elide-constructors 关闭编译器的返回值优化