STM32 - Embedded IDE - GCC - 显著减少固件的体积

导言


如上图所示,在编译器附加选项(全局)里添加--specs=nano.specs,告诉编译器使用newlib-nano替代newlib去编译代码。

newlib vs. newlib-nano

  • newlib 是 GNU ARM 工具链默认的 C 标准库,功能完整,但体积较大(包含了完整的 printf/scanf、浮点支持、本地化、多线程等)。
  • newlib-nano 是针对嵌入式优化的裁剪版本,去掉了大部分不必要的功能,使用更小的缓冲区,更适合 Flash 和 RAM 都比较紧张的 MCU(比如 STM32G431)。

一、测试编译



如上两图所示:

  • RAM的使用从13344 / 1024 = 13.03125kb 变成 10816 / 1024 = 10.5625kb。
  • FLASH的使用从75104 / 1024 = 73.34375kb 变成 45676 / 1024 = 44.60546kb。

总之,--specs=nano.specs的效果非常明显。

相关推荐
清风6666661 小时前
基于单片机的鱼缸监测与远程管理系统设计
单片机·毕业设计·课程设计·1024程序员节·期末大作业
逆小舟1 小时前
【STM32】工程文件管理
stm32·单片机·嵌入式硬件
hazy1k3 小时前
51单片机基础-DS1302时钟
stm32·单片机·嵌入式硬件·51单片机·1024程序员节
不语n5 小时前
点亮LED
单片机·嵌入式硬件
普中科技6 小时前
【普中Hi3861开发攻略--基于鸿蒙OS】-- 第 28 章 WIFI 实验-UDP 通信
单片机·嵌入式硬件·udp·wifi·liteos·hi3861·普中科技
君王的羔羊13 小时前
STM32CUBEMX安装离线库
stm32·cubemx
DIY机器人工房17 小时前
要解决 ESP32 与 STM32 之间 LoRa 通信无应答的问题,可从以下硬件、软件、参数匹配三个维度逐一排查:
stm32·单片机·嵌入式硬件·lora·嵌入式·diy机器人工房
qq_4017004117 小时前
STM32的存储起始地址和运行起始地址为什么一样
stm32·单片机·嵌入式硬件
-Excalibur-18 小时前
形象解释关于TCP/IP模型——层层封装MAC数据帧的过程
linux·c语言·网络·笔记·单片机·网络协议·tcp/ip
点灯小铭20 小时前
基于单片机的楼道声光人体红外智能控制灯设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业