打印
[STM8]

iar怎么减小编译出来的代码体积

[复制链接]
4271|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
donkey89|  楼主 | 2011-9-6 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 donkey89 于 2011-9-6 10:01 编辑

编译出来的好臃肿.一个空main就花掉几百字节了
我只知道函数自己写,包括不用库,还有其他方法没有?
例如去掉调试信息?例如干掉assert_param?这些都怎么操作?能减小体积吗?
还有一个相关问题:即便是调用官方库的一个简单过程,官方库源代码如下
uint8_t FLASH_ReadByte(uint32_t Address)
{
     /* Check parameter */
  assert_param(IS_FLASH_ADDRESS_OK(Address));
     
     /* Read byte */
     return(*(PointerAttr uint8_t *) (uint16_t)Address);

}
就这么简单的东西,空间就增加好几百.内存占用也增加几十字节.真不知道为什么
沙发
IJK| | 2011-9-6 10:25 | 只看该作者
编译出来的好臃肿.一个空main就花掉几百字节了
我只知道函数自己写,包括不用库,还有其他方法没有?
例如去掉调试信息?例如干掉assert_param?这些都怎么操作?能减小体积吗?
还有一个相关问题:即便是调用官方库的一个简 ...
donkey89 发表于 2011-9-6 09:58


去掉调试信息(例如干掉assert_param),这应该很方便,通常只要把1个define去掉就可以了:注释掉 USE_FULL_ASSERT之类的。

使用特权

评论回复
板凳
ccicc| | 2011-9-6 16:47 | 只看该作者
是否因为编译时用的是debug模式?debug模式会额外的包含一些调试用的代码。release模式则会精简很多。

使用特权

评论回复
地板
yybj| | 2011-9-6 21:32 | 只看该作者
去掉调试信息

使用特权

评论回复
5
guanggaoren| | 2011-9-7 01:43 | 只看该作者
如果用库的话,优化时不要把没有调用的函数也给编译上.

使用特权

评论回复
6
donkey89|  楼主 | 2011-9-7 08:12 | 只看该作者
5# guanggaoren
怎么操作?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:数显ESR电容等效内阻测量仪 http://cn.digit-esr.com

241

主题

1609

帖子

1

粉丝