Qtアプリのバイナリサイズを削減する(2)
Qtアプリのバイナリサイズを削減する(1) では静的リンクで20%程度サンプルアプリのバイナリサイズを削減することができました。
今回は、次に試すべきオプションを試してみます。
サイズに最適化したコンパイルオプション
最適化オプションでサイズに最適化する -Os を指定します。
Qt では、5.9 で -optimize-size というオプションが追加されました。今回は前回の続きで、-static -optimized-size を試してみます。
Qt とアプリケーションのビルド -static -optimize-size
$ mkdir -p ~/io/qt/code/qt/dev/size $ cd $_ $ ../qt5/configure -opensource -confirm-license -release -make libs -no-widgets -no-pch -prefix /opt/qt-size -hostprefix $PWD/root -ccache -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=~/org/buildroot/raspberry-pi3/host/bin/arm-buildroot-linux-uclibcgnueabihf- -sysroot ~/org/buildroot/raspberry-pi3/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/ -static -optimize-size $ make -j4 $ make install $ mkdir -p ~/com/github/task-jp/weather/size $ cd $_ $ ~/io/qt/code/qt/dev/size/root/bin/qmake -r ../weather $ make -j4
ビルドする場所が違う以外は、configure のオプションに -optimize-size を追加しただけです。
バイナリサイズの確認 -static -optimized-size
$ ls -l weather -rwxr-xr-x 1 tasuku users 11773660 Jun 21 18:14 weather
まとめ
デフォルトビルド | 21821596B | 100% | |
-static | 17321224B | ↩79.4% | 79.4% |
-static -optimize-size | 11773660B | ↩68.0% | 54.0% |
コンパイラレベルでサイズに最適化することで、32%の削減につながりました。
一番最初から比べると半分くらいになっていますね。