如题。我把没调用的函数屏蔽了,生成的HEX文件就小了,难道没用的函数也编译到HEX文件里了???
如果是这样的话,能不能设置,只有调用的才编译?
如题。我把没调用的函数屏蔽了,生成的HEX文件就小了,难道没用的函数也编译到HEX文件里了???
如果是这样的话,能不能设置,只有调用的才编译?
编译设置里把针对尺寸优化开起来。(-Os)。
刚试了,一样的
您好,正常的设置中链接时会删除未调用的段。每个函数都会有自己的section名字,你屏蔽掉的函数是否修改过,具体详细的使用方法请发送邮件到yangy@wch.cn
看代码大小,是看最后生成的HEX文件 还是看编译信息
减小代码体积的一些提示:
1)优化里面使用-Os体积优化
2)使能-flto,启用链接时优化,注意GCC8的这个功能有bug,需要使用GCC12
3)GNU?RISC-V?Cross?C?Linker里面选上Remove?unused?sections --Xlinker --gc-sections和Use?newlib-nano --specs=nano.specs和Do not use syscalls --specs=nosys.specs
楼上是大神, CH32V003大约8000行的代码编译后由原来13k 设置后压缩到12k!
提示: 改变设置后需要Clean才会使用改变后的参数.
使能-flto ... 这个还是不要随便开, 体积是减小了, 但是程序运行异常, 改回来就可以了.
题外话, 最新版的MRV对GCC12应该是做了优化的, 编译后的体积比GCC8还要小一些, 但是上一个版本正好相反:用GCC12编译后的体积比GCC8大10%.