如題。我把沒調(diào)用的函數(shù)屏蔽了,生成的HEX文件就小了,難道沒用的函數(shù)也編譯到HEX文件里了???
如果是這樣的話,能不能設(shè)置,只有調(diào)用的才編譯?
如題。我把沒調(diào)用的函數(shù)屏蔽了,生成的HEX文件就小了,難道沒用的函數(shù)也編譯到HEX文件里了???
如果是這樣的話,能不能設(shè)置,只有調(diào)用的才編譯?
編譯設(shè)置里把針對尺寸優(yōu)化開起來。(-Os)。
剛試了,一樣的
您好,正常的設(shè)置中鏈接時會刪除未調(diào)用的段。每個函數(shù)都會有自己的section名字,你屏蔽掉的函數(shù)是否修改過,具體詳細(xì)的使用方法請發(fā)送郵件到y(tǒng)angy@wch.cn
看代碼大小,是看最后生成的HEX文件 還是看編譯信息
減小代碼體積的一些提示:
1)優(yōu)化里面使用-Os體積優(yōu)化
2)使能-flto,啟用鏈接時優(yōu)化,注意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 設(shè)置后壓縮到12k!?
提示: 改變設(shè)置后需要Clean才會使用改變后的參數(shù).
使能-flto ... 這個還是不要隨便開, 體積是減小了, 但是程序運(yùn)行異常, 改回來就可以了.?
題外話, 最新版的MRV對GCC12應(yīng)該是做了優(yōu)化的, 編譯后的體積比GCC8還要小一些, 但是上一個版本正好相反:用GCC12編譯后的體積比GCC8大10%.?