由于RISC-V代码密度低,想尽量压缩代码体积。采取了以下措施:
优化等级-Os体积优化,打开压缩指令RVC,链接器增加了以下选项
--gc-sections --specs=nano.specs --specs=nosys.specs
效果还是不理想,使用-flto选项打开Link-time optimizer以后代码体积减少不少,不过报_write函数找不到。
libg_nano.a(lib_a-writer.o): in function `.L0 ':writer.c:(.text._write_r+0x12): undefined reference to `_write'
看起来是_write函数被优化掉了,这个_write函数是为了使用printf函数实现的,代码中有,不加-flto选项正常。
其它项目都是重写fputc,WCH是重写_write函数,如何在打开-flto选项后如何避免_write函数被优化掉呢?
或者是否还有其它方法可以用来减小代码体积?
同样功能的源代码在ARM上面即使使用速度优化,FLASH空间也十分充足,RISC-V的代码密度还是太拉跨了。