본문 바로가기
리눅스

ccache

by 다움위키 2023. 12. 18.

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분이 걸리지 않았습니다.

이전과 다르게, 커널 컴파일에서 대부분 작동하지 않고, 데비안 패키지에서도 거의 이득이 없으므로, 언제 사용해야 할지 의문입니다.

External links