[STM32F0] 将 main.c 改为 cpp 会向二进制文件添加浮点例程并增加体积

[复制链接]
 楼主| 柴库柴库 发表于 2025-7-1 13:16 | 显示全部楼层 |阅读模式
使用 STM32CubeIDE 创建的 STM32F091 项目,所有驱动都使用 LL 库。
最初我使用的是 Cube 生成的项目结构及其生成的 main.c 文件。
为了减小二进制文件大小,我将原本包含大量重复 GPIO 初始化代码的大型 GPIO 初始化函数,改为了使用一个紧凑的 const 结构体数组来存储 GPIO 和初始化信息,并通过一个小循环代码块来完成配置。
使用了一些自己的辅助库头文件,其中大量依赖 constexpr 关键字进行编译时计算和“打包”操作。
为此,我将 main.c 改为了 main.cpp,即用 C++ 编译它。
除了这个没有对项目做任何其他修改,也没有添加任何涉及浮点数等的计算。
但现在二进制文件不仅没有变小,反而大了约 10KB,其中 7KB 来自 .text 段中新增的内容:
text


复制


下载






__aeabi_dsub__aeabi_dadd__aeabi_ddiv__aeabi_dmul__ieee754_log
无法解释为什么现在会出现这种情况。
查看 .map 文件,没看到是什么在使用它们。
这是啥情况呢

probedog 发表于 2025-7-1 15:49 | 显示全部楼层
强制禁用浮点支持。
probedog 发表于 2025-7-1 15:50 | 显示全部楼层
强制禁用浮点支持。
powerantone 发表于 2025-7-1 18:51 | 显示全部楼层
用extern "C"包裹C库,避免C++名称修饰导致链接到意外版本。
flycamelaaa 发表于 2025-7-1 19:51 | 显示全部楼层
禁用异常和RTTI如果不需要。
stormwind123 发表于 2025-7-1 19:53 | 显示全部楼层
最小化标准库依赖。
jcky001 发表于 2025-7-1 20:54 | 显示全部楼层
精简库依赖。
cr315 发表于 2025-7-1 22:55 | 显示全部楼层
显式控制编译链接过程,避免隐式依赖。如果项目无需C++特性,建议保留.c后缀以获得更小体积。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部