UPXという実行ファイル圧縮環境がある。
諸般の事情でこれをビルドする機会があったのだが、今後もビルドするかもしれないので、とりあえずメモ。
普通のビルド
ここらへんを用意する。
Ubuntu 12.04
ちなみに、同じ手順でcygwinでもやったけどできた。
cygwinはdev環境が全てインストールされた状態。
UCL 1.0.3
圧縮解凍ライブラリ。
ここで入手する(http://www.oberhumer.com/opensource/ucl/download/)
./configure
make install
zlib
zlibも使うオプションがあって、ビルドには必要なので用意する。
ubuntuだとaptから入手できたけど、cygwinの場合はサイトから落としてきてmakeしないといけなかった。(http://www.zlib.net/)
apt-get install zlib1g-dev
UPX 3.91(source code)
これが本体。
ここで入手する(http://upx.sourceforge.net/#downloadupx)
make all
スタブのビルド
先の分で普通にビルドできるが、stub(パック済みEXEにつく解凍プログラム)はビルドされていない。これはビルド済みバイナリ相当のモノがsrc/stubに配置されていて、基本的に操作不要になっている。
ただし、stubに改造を加える場合(src/stub/src/*)はこれらもビルドと変換をしなければならない。
# ちなみに、perlとpythonも必要になる。
UPX-TOOLS
クロスコンパイラ環境的な何からしい。他環境向けstubもビルドされるので、そこら辺に対して対応するためのもの。
ここで入手する(http://sourceforge.net/projects/upx/files/upx-tools/20130920/)
READMEを読むと古いバージョンを落とすようにURLが書かれているが、しれっと新しいバージョンが置いてある。どうもこちらが正解っぽい。
解凍してパスの通った所にディレクトリごとコピーする。あまりずっと使うものじゃないので、適当な場所に落として一時的にPATHを変えるのが良いか。これでsrc/stubの下で
make all
ちなみに、stubのビルドは今の所cygwinでは上手くいっていない。
たぶんWin版だけMakefileから切り出すとか、工夫しないといけないんじゃないかと思う。