关于STM32 使用ARM GCC编译链接C++生成固件的压缩、减少和优化大小的几个编译链接参数

本文介绍了如何使用ARM GCC编译链接C++代码以优化STM32固件大小,特别是针对资源有限的STM32C8T6。通过设置编译参数如-ffunction-sections、-fdata-sections、--gc-sections、-fno-rtti、-fno-exceptions和-Os,以及链接参数--specs=nano.specs,可以有效减少固件占用的ROM空间。同时,调试信息级别-g也会影响固件大小,可根据需求调整。
摘要由CSDN通过智能技术生成

随之进来的物联网的兴起,要像安卓那样建立生态,需要跟多的开发者投入其中,那么就要降低门槛。物联网系统中arm 自家的mbed 系统就采用了c++,

用对象的形式封装了外设驱动,比如GPIO口封装成AnalogIn,AnalogOut,BusIn,BusInOut,BusOut,DigitalInOut,DigitalIn,DigitalOut等类。使开发者

可以不用非常熟悉cortex-m 内部结果和外设细节就可以进行开发应用。很多模块也是使用c++ 实现驱动的,以太网模块w5500等。这样开发者就可以花更多的

时间和精力来开发应用,让开发者只实现应用部分就可以了。

很多的刚刚入门的开发者发现自己编译的固件好大,使用MDK 生成固件大很多,像STM32C8T6这种只有64KB ROM 根本不够用,其实STM32C8功能很强大,

64K ROM 也可以在使用c++干很多很多的事。其实就是涉及编译链接的原理,ARM GCC 也提供很多C++ Flags和Linker flags 来压缩减少生成固件的大小。

1、C++ 编译参数 -ffunction-sections  -fdata-sections 和链接参数 --gc-sections。

使用ffunction-sections, -fdata-sections会使compiler为每个function和data item分配独立的section。

使用 --gc-sections会使ld删除没有被使用的section。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值