arm-none-eabi-gcc编译选项(ChibiOS)

demo: ChibiOS/demos/STM32/RT-STM32F407-DISCOVERY

arm-none-eabi-gcc 
  -c                       # 编译、汇编到目标代码,不进行链接
  -mcpu=cortex-m4          # cpu架构的优化选项
  -O2                      # 更多的优化,会尝试几乎全部的优化功能,但不会进行“空间换时间”的优化方法
  -ggdb                    # 为调试器 gdb 生成调试信息。level可以为1,2,3,默认值为2。
  -fomit-frame-pointer     # 入栈和出栈汇编在编译时被优化掉
  -falign-functions=16     # -falign-functions=N 将所有函数的起始地址在N(N=1,2,4,8,16...)的边界上对齐,默认为机器自身的默认值,指定为1表示禁止对齐。
  -ffunction-sections      # 将每个函数创建为一个sections,其中每个sections名与function名保持一致
  -fdata-sections          # 将每个符号创建为一个sections,其中每个sections名与data名保持一致
  -fno-common              # 未初始化的全局变量当成强符号,重复定义就会报错
  -flto                    # flto主要做的操作有inline、ipa和alias分析等
  -Wall                    # 会打开一些很有用的警告选项,建议编译时加此选项。 
  -Wextra                  # 打印一些额外的警告信息
  -Wundef                  # 当一个没有定义的符号出现在 #if 中时,给出警告。
  -Wstrict-prototypes      # 如果函数的声明或定义没有指出参数类型,编译器就发出警告。很有用的警告。
  -Wa,-alms=build/lst/     # 指定输出的lst文件路径和名称
  -DCORTEX_USE_FPU=FALSE   # -Dname 预定义一个名为name的宏,值为1。
  -DTHUMB_PRESENT          # -Dname 预定义一个名为name的宏,值为1。
  -mno-thumb-interwork     # 不 产生支持ARM和THUMB指令集间调用的代码
  -DTHUMB_NO_INTERWORKING  # -Dname 预定义一个名为name的宏,值为1。
  -MD                      # 等同于 -M -MF File,但是默认关闭了 -E 选项
  -MP                      # 生成的依赖文件里面,依赖规则中的所有 .h 依赖项都会在该文件中生成一个伪目标,其不依赖任何其他依赖项
  -MF .dep/build.d         # -MF File 当使用了 “-M” 或者 “-MM” 选项时,则把依赖关系写入名为 “File” 的文件中。若同时也使用了 “-MD” 或 “-MMD”,“-MF” 将覆写输出的依赖文件的名称 。
  -I.                      # -I ( i 的大写)  :指定头文件路径(相对路径或绝对路径,建议相对路径)
  -I../../../os/license 
  -I../../../os/common/portability/GCC 
  -I../../../os/common/startup/ARMCMx/compilers/GCC 
  -I../../../os/common/startup/ARMCMx/devices/STM32F4xx 
  -I../../../os/common/ext/ARM/CMSIS/Core/Include 
  -I../../../os/common/ext/ST/STM32F4xx 
  -I../../../os/rt/include 
  -I../../../os/common/oslib/include 
  -I../../../os/common/ports/ARMCMx 
  -I../../../os/common/ports/ARMCMx/compilers/GCC 
  -I../../../os/hal/osal/rt 
  -I../../../os/hal/include 
  -I../../../os/hal/ports/common/ARMCMx 
  -I../../../os/hal/ports/STM32/STM32F4xx 
  -I../../../os/hal/ports/STM32/LLD/ADCv2 
  -I../../../os/hal/ports/STM32/LLD/CANv1 
  -I../../../os/hal/ports/STM32/LLD/DACv1 
  -I../../../os/hal/ports/STM32/LLD/DMAv2 
  -I../../../os/hal/ports/STM32/LLD/EXTIv1 
  -I../../../os/hal/ports/STM32/LLD/GPIOv2 
  -I../../../os/hal/ports/STM32/LLD/I2Cv1 
  -I../../../os/hal/ports/STM32/LLD/MACv1 
  -I../../../os/hal/ports/STM32/LLD/OTGv1 
  -I../../../os/hal/ports/STM32/LLD/QUADSPIv1 
  -I../../../os/hal/ports/STM32/LLD/RTCv2 
  -I../../../os/hal/ports/STM32/LLD/SPIv1 
  -I../../../os/hal/ports/STM32/LLD/SDIOv1 
  -I../../../os/hal/ports/STM32/LLD/TIMv1 
  -I../../../os/hal/ports/STM32/LLD/USARTv1 
  -I../../../os/hal/ports/STM32/LLD/xWDGv1 
  -I../../../os/hal/boards/ST_STM32F4_DISCOVERY 
  -I../../../test/lib 
  -I../../../test/rt/source/test 
  -I../../../test/oslib/source/test 
  -I../../../os/various main.c 
  -o main.o                 # -o选项用来指定输出文件,如果不使用 -o 选项,那么将采用默认的输出文件

你可能感兴趣的:(stm32,linux)