博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cortex-M0 ARM-GCC 编译链接选项
阅读量:6074 次
发布时间:2019-06-20

本文共 912 字,大约阅读时间需要 3 分钟。

hot3.png

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

编译环境: windows+cygwin

使用编译器:arm-none-eabi-gcc-4.6:

 

编译选项:

-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

转载于:https://my.oschina.net/lgl88911/blog/70505

你可能感兴趣的文章
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
Linux常用命令大全
查看>>
python练习笔记
查看>>
Python IO编程-组织文件
查看>>
org/springframework/core/MethodClassKey
查看>>
Linux软件安装包中devel与非devel包之间的区别
查看>>
logback与Spring、SpringMVC结合使用教程(转) logback good
查看>>
ZipDemo
查看>>
浏览器中关于事件的那点事儿(转)
查看>>
[转]Vim 复制粘贴探秘
查看>>
4.元组
查看>>
为什么Dotnet Core的DI默认是在控制器中注入
查看>>
[Go] golang连接redis测试
查看>>
spring 缓存 @CachePut 和 @Cacheable 区别
查看>>
VS自定义代码段简单使用
查看>>