ccache는 어떻게 설정합니까?


36

컴파일 속도를 높이기 위해 ccache 를 사용하고 싶습니다 .

ccache어떻게 활성화합니까? .

이것이 내가 지금까지 한 일입니다.

$ sudo apt-get install -y ccache
$ dpkg -l ccache
ii  ccache  3.1.6-1   Compiler cache for fast recompilation of C/C++ code
$ whereis ccache
ccache: /usr/bin/ccache /usr/lib/ccache /usr/bin/X11/ccache /usr/share/man/man1/ccache.1.gz

나는 추가 ccache내에 추가하여 경로에 ~/.bashrc파일을

$ export PATH="/usr/lib/ccache:$PATH"
$ source ~/.bashrc
$ echo $PATH
/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

심볼릭 링크가 잘 보입니다.

$ ll /usr/lib/ccache/
total 76
drwxr-xr-x   2 root root  4096 mai   22 10:48 ./
drwxr-xr-x 253 root root 69632 mai   22 10:48 ../
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc-4.5.3 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c89-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c99-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 cc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc-4.6 -> ../../bin/ccache*

링크가 좋아 보인다 :

$ which g++
/usr/lib/ccache/g++

$ make
g++ -o affine_euler affine_euler.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3
g++ -o test_eigen test_eigen.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3

그러나 캐시는 비어 있습니다.

$ ccache -s
cache directory                     /home/dell/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes

내가 어디 틀렸어?


나는 일반적인 경우에는 작동하지만 내 makefile에서는 작동하지 않는다는 것을 깨달았습니다 (예 : cmake와 작동합니다). 그래서 문제는 내 캐시 파일이 아니라 cmake 구성에 있다고 생각합니다.
빅터 라모 인

답변:


45

설치:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

당신의 길 (최소한 시작)은 다음과 같아야합니다 :

/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

그리고 g++/ gcc는 이제 가리켜 야합니다 :

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

구성 :

파일 수와 캐시 크기에 제한이없는 경우 :

ccache -F 0
ccache -M 0

캐시 통계 표시 :

ccache -s

캐시를 비우고 통계를 재설정하십시오.

ccache -C -z

용법:

전화 할 때마다 gcc또는 g++; ccache호출됩니다. 내 실수는 이미 컴파일 된 파일을 삭제하지 않았다는 것입니다. 모든 CMake/ output 파일을 삭제하고 다시 구성 / 컴파일하십시오.

당신 ccache은 비워서는 안됩니다. 지금 시도 make clean하고 make당신은 그것을 캐시에 재 컴파일 모든 힘 입어보다 훨씬 빠른 볼 수 있습니다.


이 명령을 수행 한 후 ccache가 clang 및 clang ++을 캐시하지 않는 방법
Wang

4

당신 $PATH은 정확하지 않습니다; ccache의 디렉토리가 있어야합니다. 그냥 실행 :

export PATH="/usr/lib/ccache/:$PATH"

... g++명령을 다시 시도 하십시오. 이 디렉토리는를 호출하는 프록시 명령으로 가득합니다 ccache. 이것은 대부분의 스크립트에서 작동합니다.


g++위의 make와 달리 수동으로 전화를 거는 경우 명령 앞에 추가하면됩니다.

ccache g++ ...

이 디렉토리는 존재하지 않습니다 : $ ls -1 /usr/lib/ccache/ avr-g++ avr-gcc avr-gcc-4.5.3 c++ c89-gcc c99-gcc cc g++ g++-4.6 gcc gcc-4.6 x86_64-linux-gnu-g++ x86_64-linux-gnu-g++-4.6 x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc-4.6
Victor Lamoine

나는 아치 튜토리얼을 읽고 있었다. 모든 것이 /usr/lib/ccache/그냥 사용한다면.
Oli

export PATH="/usr/lib/ccache/:$PATH" ccache 바이너리가 /usr/bin및 에서 작동하지 않습니다 /usr/bin/X11. 나는 성공하지 않고이 두 가지 길로 시도했다
Victor Lamoine

그러나 위에 나열된 프록시 명령은 모두에 /usr/lib/ccache/있습니다. 당신은 너무 때 경로에 추가 할 make통화를 g++하거나 cc또는 무엇이든, 그것은 실제로 부르고 ccache사용이 가능한 버전.
Oli

링크가 이제 ccache를 가리 키기 때문에 닫았습니다 (첫 번째 게시물을 편집했습니다).하지만 캐시는 항상 비어 있습니다.
빅터 라모 인

1

설치 관련 :

우분투 18.04 (Bionic Beaver)에서 배송 된 기본값이 cc및의 호출을 포착하지 못한다 는 것을 발견했습니다 c++. ccache를 완전히 설치하려면 다음이 필요합니다.

sudo apt install ccache
sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"

또한 호출 후 (업데이트 심볼릭 링크로 인해) ccc++잡힐!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.