今やってるプロジェクトで、どうもROMサイズが足りなくなる予感がしているので、実行オブジェクトのサイズを小さくする方法を模索中。ターゲットはいつもの(Stellaris/CORTEX-M3)です。
現在使っているコンパイラ&ライブラリはCoresourcery G++ Lite(ARM)なので、これに添付されてくるライブラリはglibcらしいということで、これをnewlibに変更してみてはどうかと。
とりあえずnewlibの最新版newlib-1.19.0をダウンロード。configure+makeだけではビルドできなかったので、ゴニョゴニョして(詳細は別途)とりあえずthumb2対応のnewlib版libc.aを得た。そして、今のプロジェクトでライブラリだけ差し替えてビルド後、arm-none-eabi-sizeでできあがった実行ファイルのサイズを調べてみると・・・
(glibc版ライブラリ)
text data bss dec hex filename
247192 5516 79544 332252 511dc ***.elf
(newlib版ライブラリ)
text data bss dec hex filename
249496 5516 79544 334556 51adc ***.elf
「なんや!glibcに負けとるやないか!」
というわけでnewlib案はボツに。
結局、実行コードのサイズを下げるという目的は果たせなかった・・・。
0 件のコメント:
コメントを投稿