Ccache는 다음 번에, 같은 컴파일이 피해질 수 있고 결과가 캐시로부터 가져올 수 있도록 C/C++ 컴파일의 출력을 캐시하는 소프트웨어 개발 도구입니다. 이것은 다시-컴파일 시간을 크게 단축할 수 있습니다. 탐지는 컴파일에 대해 고유해야 하는 여러 종류의 정보를 해싱하고 그런-다음 캐시된 출력을 식별하기 위해 해시 합을 사용함으로써 행해집니다. Ccache는 GNU General Public License 아래에서 라이선스됩니다.
Installation
패키지를 설치합니다:
- sudo apt install ccache
심볼릭 링크를 업데이트합니다:
- sudo /usr/sbin/update-ccache-symlinks
Ccache를 PATH 반드시 앞에 추가합니다:
- echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc
변경 사항을 적용하고 확인을 합니다:
- source ~/.bashrc && echo $PATH
/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
그리고 g++/gcc는 이제 다음을 가리켜야 합니다:
- which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc
Configuration
만약 파일 수와 캐시 크기에 제한을 두지 않으려면 다음을 수행하십시오.
- ccache -F 0
- ccache -M 0
캐시 통계 표시를 표시합니다:
- ccache -s
캐시를 비우고 통계를 다시 설정하십시오.
- ccache -C -z
kernel option
커널 컴파일에서 커널 소스가 조금만 바뀌어도 ccache의 효과를 보지 못할 수 있습니다. 다음 패키지를 설치해야 관련된 커널 옵션이 활성화됩니다:
- sudo apt install gcc-10-plugin-dev
다른 옵션들은 이미 활성화되어 있기 때문에, 다음을 추가해야 합니다:
General architecture-dependent options --->
[*] GCC plugins --->
[*] Generate some entropy during boot and runtime
하지 말아야 할 작업
- make clean : 새롭게 컴파일을 수행.
- deb-pkg : 소스 패키지를 만들면, 자동으로 make clean을 수행.
다음 패치 후 적용할 수 있는 방법.
- 새로운 패치 후, binpkg만 사용하고, make clean, deb-pkg를 사용하지 않아야 합니다.
debian package build
데비안 패키지 컴파일에서, DEB_BUILD_OPTIONS에 "ccache"를 적어줄 수 있습니다.
실제 사용 예제
지금 시스템에서 gcc-7으로 커널을 컴파일할 경우에 13분이 조금 지나는 정도의 시간이 걸립니다. Ccache를 설치하고 gcc-8으로 컴파일했을 때, 22분 정도가 걸렸습니다. 패치를 하나 진행하고 gcc-8으로 새롭게 컴파일 했을 때 3분이 걸리지 않았습니다.
이전과 다르게, 커널 컴파일에서 대부분 작동하지 않고, 데비안 패키지에서도 거의 이득이 없으므로, 언제 사용해야 할지 의문입니다.