UPX Ver2.00
EXEやDLLを実行可能なままで圧縮するツールとして有名なUPXの、Stable版が約2年ぶりくらいに公開されています。
今回私のブログで取り上げるのは、arm/pe (ARM executables running on WinCE)サポートが追加されたためです。
The main news in version 2 are:
- new format: added support for arm/pe (ARM executables running on WinCE)
- new format: added support for linux elf/amd64
- new format: added support for linux elf/ppc32
- new format: added support for mach/ppc32 (Apple Mac OS X)
- new format: added support for bootable Linux kernels ("vmlinuz/386")
- new format: added support for Playstation exes ("ps1/exe")
- slightly better compression using the new NRV2E algorithm
- new options for compression tuning (e.g. '--brute')
- improved win32/pe compatibility
- direct ELF-to-memory decompression
- various bug fixes
先月にかなり久しぶりのβバージョンが公開されて驚きましたが、さっそくの正式版リリースはうれしいです。せっかくですので、ちょっとだけ試してみました。
exeとdllをぱっと試せそうな・・ということで、先日リリースされて手元にあったMangaMeeyaCEのAlpha版で。(Alpha版で試すのは・・非常によろしくないと自分でも思いますが常用するわけでなく、お試しなので(^^;;;)
圧縮はW-ZERO3上ではできませんので、Win32 console versionを使ってWindowsPC上で行い、圧縮後のファイルをW-ZERO3にコピー。以下、ファイル毎に圧縮前のファイルサイズと圧縮後のファイルサイズ。
- arc.dll
199.50KB→89.00KB
- gif.dll
53.50KB→24.00KB
- jpg.dll
177.50KB→62.50KB
- MangaMeeyaCE.exe
660.50KB→235.00KB
- png.dll
181.50KB→81.00KB
ということで、合計約1.24MB→約491.5KBと、半分以下に小さくなりました。
W-ZERO3でちょこっと起動してみましたが・・無事起動。pngファイルも読み込めました。
ただWindowsの場合ですが、UPXで圧縮すると共有して使うようなDLLがメモリ上で共有されない?ようなことを昔聞いたことがあったような。WindowsCEで使うメリットは・・・正直微妙なのかもしれませんが、単純にファイルサイズを減らせるので、役に立つことはあるかもしれません。
まだ公開されてそれほど経っておらず、実績もそれほどないと思いますので、試されるときは自己責任で。重要なアプリにはまだ使わない方がよいと思います。私はすぐに圧縮前の状態に戻しました(^^;。
(追記)
母艦PC上でUPX圧縮する際は、この辺りのGUIフロントエンドを使うと便利だと思います。
それぞれのツールには、UPXフォルダにUPXの古いバージョンが同梱されていますので、その中を、今回リリースされたVer2.00のWin32 console versionで置き換えて使います。
私は昔から使っているUPX 日本語frontendを使って圧縮したのですが、おそらく基本コマンドは変わっていないため、問題なく圧縮できました。
多分またUPX本体がVerUpする可能性もあるような気がして様子見気分でしたが、せっかくなので色々試してみようかなと思ってます。
少なくとも、サイズが小さい本体側のデータ記憶領域の空きを増やすことが出来るというメリットがありますからね。その代わり、圧縮することでプログラムの実行領域の方がどうなるのかは、色々試さないとわからないと思いますが・・。
(さらに追記)
星羽さんが、UPXを色々なアプリで試され、その結果を詳しく紹介されています。
やはり問題の出るアプリは多いようですが、起動時間が短くなるのは嬉しいです。メモリアクセスは、PCと違ってまだネックになる所があるのかもしれません。特にminiSDカードを使っている場合は。確かにminiSDカードに入れて使っているMangaMeeyaCEも若干起動が速くなったような気がします。
いつも詳細な解説ありがとうございます。