2014/07/06

Lazarus でコンパイルしたバイナリを小さくする

 Windows 版 Lazarus アプリの実行ファイルの大きさ対策。Delphi と比べると、やたらデカイ。まぁ、大きくても問題はないけど、一応。

 以下、ポイント。僕の環境だと、strip が必須だった。「-Xs」オプションは無効?なのか。
① 3つのオプションをチェック[X]オン
 Compiler Options
  Compilation and Linking
   [X] Smart linkable (-CX)
   [X] Link smart (-XX)
  Debugging
   [X] Strip symbols from executable (-Xs)

② strip(デバッグ情報除去)実行
 lazarusパス\fpc\2.6.4\bin\i386-win32\strip.exe --strip-all XXXXX.exe

upx(圧縮ツール)実行
 upxパス\upx.exe XXXXX.exe
 要は、コンパイル後、strip と upx を通す。BAT ファイルにでもしておけばいい。
実行例
 ① コンパイル 22.5 MB → ② strip 実行 2.44 MB → ③ upx 実行 827 KB
 それでも、大きいが…。Delphi が優秀、という事にしておく。


追記 2015-02-20
 matsui さんに教えてもらいました。strip は要らないようです。
① 3つのオプションをチェック[X]オン
 Compiler Options
  Compilation and Linking
   [X] Smart linkable (-CX)
   [X] Link smart (-XX)
  Debugging
   [X] Strip symbols from executable (-Xs)

② オプションをチェック[ ]オフ
 Compiler Options
  Debugging
   [ ] Generate debugging info for GDB

upx(圧縮ツール)実行
 upxパス\upx.exe XXXXX.exe


追記 2016-08-21
 64bit 版 Ver 1.6 をインストールしました。構築モードが正しく動作するので、余計なことをせず、"Release" でコンパイル後、upx だけ実行すればいいと思われます。



追記 2017-01-27
 Delphi と比べて、バイナリサイズが大きいとか書いてますが、比べてるのは、大昔の Delphi 5 (1999年www、軽いので使い続けてる)で、最近の Delphi と比べるのならば、それほど大きなサイズとは言えないかも。

0 件のコメント:

コメントを投稿