Cortex-M0 ARM-GCC 编译链接选项

经过两周的努力,使用ARM-GCC编译出来的文件终于可以下载到板子上跑起来了,关于编译器的配置解释如下:

编译环境: windows+cygwin

使用编译器:arm-none-eabi-gcc-4.6:https://launchpad.net/gcc-arm-embedded/4.6/2011-q4-major

 

编译选项:

-Wall                                  打开waring

-fsigned-char                      将char做为signed

-fno-builtin                         不使用build in函数(glibc函数)

-ffunction-sections              将函数放到自己的section中(链接时配合--gc-sections可以移除没有使用的函数)

-fdata-sections                   将data放到自己的section中(链接时配合--gc-sections可以移除没有使用的data)

-mcpu=cortex-m0               cpu类型cortex-m0

-mthumb                            指定arm指令集 thumb(16bit/32bit混合指令集)

 

链接选项:

-mcpu=cortex-m0               cpu类型cortex-m0

-mthumb                            指定arm指令集 thumb(16bit/32bit混合指令集)

-nostartfiles                                                      不使用编译器默认的ld文件和startup文件

-Wl,-Map=$(IMG_PATH)/$(IMG_MAP)                   生成指定的map文件

-Wl,--gc-sections                                              移除唯有链接的内容

-Wl,-T$(L_SCRIPT)                                            指定ld文件

 

 

出现过的问题:

编译选项忘了使用-mcpu=cortex-m0 –mthumb,导致编译后的文件无法运行。

链接时gcc -Map=$(IMG_PATH)/$(IMG_MAP) --gc-sections 会直接报不能识别选项,需要使用-Wl,--gc-sections来指定是链接选项即可

 

其它的几个命令:

elf 转bin: arm-none-eabi-objcopy -O binary –S file.elf file.bin

分析elf size: arm-none-eabi-size file.elf

你可能感兴趣的:(Cortex-M0 ARM-GCC 编译链接选项)