'실행파일 사이즈'에 해당되는 글 1건

  1. 2014.10.15 [Embedded Linux] Ultimate Packer for eXecutables (UPX) Cross Compile

Ultimate Packer for eXecutables 이하 UPX 는 실행파일을 실행가능하게 압축하여 사이즈를 줄여주는 프로그램으로 대상에 따라 다르겠지만 대부분 40프로 가량 줄여 주는것 같다. 요즘은 임베디드 시스템도 고사양으로 저장장치나 RAM사이즈가 커져서 굳이 사용할 일 이 없을 수도 있으나 저사양의 임베디드시스템에서는 100kb 용량도 비중이 클 수 있어서 이런 시스템에서 사용하면 유용한 프로그램이다.


UPX 장점

  1) 저장 장치의 저장공간 절약.

  2) RAM에서 로딩하는 사이즈도 줄 수 있어서 RAM 절약.

  3) Windows 32/64/CE, LInux, MAC, DOS, OpenBSD, NetBSD, AtariTOS/Mint, Playstation 1 등 거의 모든 실행 포맷 제공.


UPX 단점

  1) 크게 체감상 느껴지지 않지만 실행 속도가 약간 늦음.


UPX는 사이트내에서 기본적으로 미리 컴파일을 하여 실행 프로그램을 제공해주고 있으나 내가 사용하는 보드는 TI DM368 보드여서 Cross Compile을 해줘야 한다. 소스코드는 (http://upx.sourceforge.net/) 에서 다운로드가 가능하다. UPX를 컴파일 하기 위해서는 UCL 라이브러리가 필요하기 때문에 UCL 라이브러리를 먼저 컴파일 해야 하는데 UCL은 (http://www.oberhumer.com/opensource/ucl/) 에서 다운로드 가능하다. 


UCL 컴파일

host$ CC=/home/dark2pee/Project/ti-dvsdk_dm3730-evm_04_03_00_06/linux-devkit/bin/arm-arago-linux-gnueabi-gcc ./configure --host=arm-arago-linux-gnueabi --prefix=/home/dark2pee/temp/ucl


UPX 컴파일을 위해서 Makefile 수정 (./upx-3.91-src/src/Makefile)

#CXX = g++
CXX = /home/dark2pee/Project/ti-dvsdk_dm3730-evm_04_03_00_06/linux-devkit/bin/arm-arago-linux-gnueabi-g++

                                                           :

#UCL Path 추가

UPX_UCLDIR = /home/dark2pee/Project/upx/ucl-1.03


#LIBS += -lucl -lz
LIBS += $(UPX_UCLDIR)/src/.libs/libucl.a -lz


UPX 컴파일

host$ make all


UPX를 컴파일 하면 src 폴더에 upx.out이 생성 되고 이를 이용하여 실행 프로그램의 사이즈를 줄여 준다.


target$ ./upx.out  -1 TESTApp
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013
 
        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------

TESTApp  1/4  [****................................................]   25.2%  |

   6839883 ->   4367184   63.85%   linux/armel   TESTApp
 
Packed 1 file.


UPX Site : http://upx.sourceforge.net/

Posted by 다크쌍피