经常需要配置各式各样的C语言的GCC参数,也老是忘记。特此归档记录在这里,以供未来取用。暂时只收集想到的用过的 更多以后更新和迭代
后文将以makefile中更新某个CLFAGS的方式记录。
CLFAGS += -g #打开gdb符号,添加后对于gdb调试能够看到详尽符号信息
CLFAGS += -O0 #无优化
CLFAGS += -O1 #基本的优化,提高代码性能,同步较快编译速度。包括比如局部变量和临时变量、循环、死代码消除、函数内联(如果合适)、基本的代码重排等
CLFAGS += -O2 #高级别优化,除了O1外还增加了其他,比如:循环进一步优化、内联、死代码消除,更复杂的代码重排和简化、寄存器分配。
CLFAGS += -O3 #最高级优化,旨在生成尽可能快的代码,编译时间变更长。比如:激进的循环优化、自动向量化(自动将循环转换为向量操作,适用于支持SIMD指令的处理器)、更多的自动向量化和自动并行化。
CLFAGS += -Os #生成更小bin,同时保持合理的性能。比如:移除未使用代码和库函数、优化数据结构布局以及减少代码大小。
# 告警系列
CLFAGS += -w #暂时关闭告警
CLFAGS += -Wall #打开所有告警
CLFAGS += -Werror #将所有告警都作为编译error,正式发布需要用
CLFAGS += -Wno-unused-variable # 有未使用的变量告警,一般用在内存资源不足的场景比如RTOS系统以及蓝牙wifi等芯片
CLFAGS += -Wno-unused-but-set-variable #同上但是初始化值了,一般用在比如RTOS系统以及蓝牙wifi等芯片
CLFAGS += -Wno-unused-function #一般用在节约内存等场景,同上
CLFAGS += -Wno-error=date-time #关闭date-time的告警,C中使用 __DATE__, __TIME__等有些会告警
CLFAGS += -Werror=date-time #打开date-time的告警,C中使用 __DATE__, __TIME__等有些会告警
CLFAGS += -Wno-error # 关闭将所有告警都error的开关,临时debug需要
# 其他
CLFAGS += --std=gnu99 #指定std库的版本 就是#include "stdio.h"这种
CLFAGS += -fdump-rtl-expand #打开rtl(寄存器转换语言)语法的扩展,一般在FPGA的设计中也会遇到,以及在编译器底层的技术,主要用途在这里更多参考这篇链接:https://blog.csdn.net/essencelite/article/details/132748128
# 待定
-march
-mtune
-mabi