Linux 환경에서 build (compile) 시간을 짧게하기 위한 방법을 찾아보면 꼭 나오는 방법이 있다.
바로 ccachedistcc 다!

여기에서는 ccache에 대해서 알아보겠다.

원리는 비교적 간단하다.
처음에 빌드를 할 때에 정보와 함께 그 결과물을 저장하고 있다가,
다음 번 빌드를 할 때엔 정보를 비교해서 같은 파일의 빌드를 한다면 저장하고 있는 결과물을 활용하는 것이다.
그렇게 함으로써 두 번째 빌드부터는 변경된 부분만 빌드를 수행하므로 소요시간이 짧아지는 것이다.




1. 공식 사이트

     - http://ccache.samba.org/
     - License : GPL3

     - 기본적으로 gcc 컴파일에 적용을 할 수 있으며, Cross-compiler (Tool-chain)에도 적용할 수 있다.

     - 안전성에 대해서는 나름 자부를 하고 있는 상당히 오래된 프로젝트이며,
       구글의 안드로이드에서도 공식적으로 옵션으로 적용을 하고 있다.




2. Install

     - Ubuntu에서는 편하게 패키지로 제공을 해준다.


$ sudo apt-get install ccache

     - 이걸로 끝이다. 간단하지 않은가 ?!




3. PATH

     - ccache를 활용하기 위해서는 PATH 설정만 해주면 된다.


$ sudo nano /etc/environment

PATH="/usr/lib/ccache:......."

     - 환경파일에서 PATH 값에서 제일 앞에 "/usr/lib/ccache:" 경로를 추가해주면 된다.
     - 일단은 이러면 끝이다.




4. Environment

     - 그러면 대체 왜 "/usr/lib/ccache" 디렉토리를 경로에 추가를 해줘야할까?


$ cd /usr/lib/ccache

     - 검색해서 자료들을 보면 "export CC='ccache cc'"등을 설정하기도 하고,
       Makefile을 수정하기도 하는 등 다른 방식으로 처리하기도 하지만...
     - 최근엔 그냥 '/usr/lib/ccache' 디렉토리를 이용하면 모든 것이 끝이다.

     - Compiler를 모두 ccache로 대체하면 되는 것이다.

     - 만약 Cross-compiler (Tool-chain)을 사용하는 경우라면 위 디렉토리에 링크를 만들어주면 된다.

$ cd /usr/lib/ccache
$ sudo ln -s ../../bin/ccache powerpc-tuxbox-linux-gnu-cc
$ sudo ln -s ../../bin/ccache powerpc-tuxbox-linux-gnu-c++
$ sudo ln -s ../../bin/ccache powerpc-tuxbox-linux-gnu-gcc
$ sudo ln -s ../../bin/ccache powerpc-tuxbox-linux-gnu-g++






5. cache dir

     - ccache를 적용하면 빌드 결과물을 어딘가에 저장해놓는다고 했는데, 어디에 위치할까?


$ ccache -s

     - 상태(status)를 확인하고 싶을 때 사용할 수 있는 명령이다.

     - 기본적으로는 홈 밑의 ".ccache" 디렉토리에 위치하며, 기본 용량제한은 1GB이다.





6. clear

     - 빌드 결과가 왠지 이상하다거나 cache 데이터를 지우고 싶을 때엔 다음 명령으로 처리할 수 있다.


$ ccache -C




몇 가지 더 옵션들이 있지만, 알고 싶으면 공식 사이트를 참조하기 바란다.
실제로 적용해보면 탁월하게 효과가 있다~!!!

반응형

+ Recent posts