本帖最后由 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 了 ......
今天摸索出来的办法,不知道有没有人发过
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
哦,这段代码已经把/*#define USE_FULL_ASSERT 1 */注释掉了,也即是说 参数检查定义的函数是
#define assert_param(expr) ((void)0)
而不是
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
由于上面那个参数检查函数比下面这个简单(小),所以代码会小?
(上面那个参数检查函数好像没起作用吧,也就是说取消了参数检查,左移代码可以变小?)
所以这点已经是默认优化了的?
一周热门 更多>