ARM GCC生成固件的压缩、减少和优化大小的几个编译链接参数


ARM GCC生成固件的压缩、减少和优化大小的几个编译链接参数

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

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

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

就可以压缩固件大小的目的了

2、C++ 编译参数 -fno-rtti -fno-exceptions.

-fno-rtti Don't generate runtime type idertification (RTTI)

不使用RTTI

-fno-exceptions Don't catch exceptions

不捕获程序异常

3、C++ 编译参数 -Os

Optimize gennerated code(for size) [-Os]

优化代码大小,除了-Os外 还有 -O0 -O1 -O2 -O3 -Ofast.。

4、链接参数---specs=nano.specs

使用静态库 libc_nano.a libstdc++_nano.a libsupc++_nano.a替换默认的静态库 libc.a libstdc++.a libsupc++.a这样就可以大大减小固件了。

5、另外还有 -g -g1 -g2 -g3 ,这些都是调试信息,也会影响生成固件的大小。


文章作者: Vinx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Vinx !
 上一篇
CMake杂记 - 一些零零散散的使用技巧 CMake杂记 - 一些零零散散的使用技巧
CMake杂记 1. 在编译过程中打印编印信息 执行命令cmake时追加:-DCMAKE_VERBOSE_MAKEFILE=ON 在CMakeLists.txt中添加:set(CMAKE_VERBOSE_MAKEFILEON ON
2024-06-20
下一篇 
STM32 使用 CLion 时SystemClock_Config失败 STM32 使用 CLion 时SystemClock_Config失败
STM32 使用 CLion 时SystemClock_Config失败 可能原因,来自https://blog.t123yh.xyz:3/index.php/archives/922 故障分析 我们从 OpenOCD 的启动流程
2023-11-15
  目录