STM32 简单两步给ST的库瘦身

2019-12-13 18:29发布

本帖最后由 Etual 于 2012-6-29 10:08 编辑

使用了ST的库,感觉体积有点大,点亮个 LED 使用了  2.5K flash 了。

一个简单的瘦身办法,也就是,将不使用的函数剔除,不连接进去最终的烧写文件,有用的函数连接进去,没用的函数不要。

只需要2步

设置项目属性
1,在 Linker 页的 Misc contrrols 那里添加  --remove
作用是将不使用的输入段(input sections)移除。

--remove 这个参数是Keil 默认已经开启的,所以加不加都一样 , Etual  2012-6-29 修改

2,单加上面那个是没有效果的,因为一个文件作为一个输入段的话就没效果了。
所以下面的操作是将每个函数作为一个输入段,这就可以优化了。方法是
在 C/C++ 页勾选 “One ELF Section per Function”  就可以了
优化我一般选 -02

重新编译,原来 2.5K 的程序,现在变成 1.2K 了 ......

今天摸索出来的办法,不知道有没有人发过
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
95条回答
adce
1楼-- · 2019-12-17 00:40
如果不加 One ELF Section per Function  
那么编译时 是以.c为单位的 就是这个.c文件里 哪怕只用了一个函数...整个.c里的所有函数都会被编译...

如果加了 One ELF Section per Function
那么编译时 是以函数为单位的...用一个函数就编译一个...不用的绝对不编译...

良好的程序写法的情况下...够不够选这个差别很小...
orzorzorzorz
2楼-- · 2019-12-17 04:56
用iar就不存在这个问题,不用的函数,即使编译了也不会链接进去的
Onsunsl
3楼-- · 2019-12-17 08:11
GCC的链接器好像是把源文件里的都连接进去了,所以整个文件很大
不用的库文件还是给它去掉
zhangyb
4楼-- · 2019-12-17 12:56
 精彩回答 2  元偷偷看……
jiespring
5楼-- · 2019-12-17 14:22
NICE 有用
lcofjp
6楼-- · 2019-12-17 20:16
这个得顶,有机会试试

一周热门 更多>