如何在Linux上启用ccache

Ark*_*rky 7 linux gcc gnu ccache

关于ccache在GNU/Linux 上启用的文档很少.以下是launchpad.net的回复:

目前,我认为启用ccache的最佳方法是在路径的前面添加"/ usr/lib/ccache".如果要在默认情况下为所有用户启用它,请更改/ etc/environment中的PATH变量.

有人可以给我更多关于启用的信息ccache吗?

Joe*_*ahl 7

总而言之,有两种选择:

  1. 在编译命令前加上前缀ccache,例如ccache gcc -c example.c
  2. 让 ccache 伪装成编译器。这是通过创建一个名为编译器的 ccache 符号链接来完成的,例如通过ln -s /path/to/ccache /usr/local/bin/gcc.

一些 Linux 发行版通常会设置一个/usr/lib/ccache带有类似于上面替代方案 2 的符号链接的目录,然后您只需添加/usr/lib/ccachePATH例如使用PATH=/usr/lib/ccache:"$PATH")即可启用 ccache。

另请参阅ccache 手册,尤其是运行模式部分,其中描述了如何启用 ccache。


Ank*_*Raj 7

下载最新版本的ccache以获得更好的性能。

下载后,请按照以下步骤操作:

A) 使用以下命令对文件进行 Tar 处理:

 $tar -xvf ccache-3.2.4.tar.bz2
 
 Note : I'm using ccache 3.2.4 Version.You can download the latest one.
Run Code Online (Sandbox Code Playgroud)

B) 进入 ccache-3.2.4 文件夹并运行以下命令:

 $./configure
 $./make 
 $ sudo make install
Run Code Online (Sandbox Code Playgroud)

C) 转到您的 .bashrc 并插入以下内容:

 export CCACHE_DIR=/home/user_name/.ccache
 export CCACHE_TEMPDIR=/home/user_name/.ccache

 Note : Fill user_name with your User Name
Run Code Online (Sandbox Code Playgroud)

D) 保存你的 Bashrc 并获取它

 $ source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

E) 要检查 ccache 是否正常工作,请键入:

 ccache -M 10G : To Set the ccache Size to 10GB
Run Code Online (Sandbox Code Playgroud)

F) 要检查 ccache 是否正常工作,请键入:

 ccache -s : To check ccache statistics 
Run Code Online (Sandbox Code Playgroud)


Dir*_*tel 5

至少有两种方法:

我)重写CC,CXX在一个Makefile,...标志.在R框架内,读取系统和可选的用户配置文件,我只需设置

VER=4.7
CC=ccache gcc-$(VER)
CXX=ccache g++-$(VER)
SHLIB_CXXLD=g++-$(VER)
FC=ccache gfortran
F77=ccache gfortran
Run Code Online (Sandbox Code Playgroud)

这也允许我在gcc版本之间来回切换.现在所有涉及R使用的编译ccache.

ii)对于其他用途,我已经部署了/usr/local/bin/之前检查过的事实/usr/bin.人们可以做到

root@max:/usr/local/bin# ls -l gcc
lrwxrwxrwx 1 root root 15 Jan 27 11:04 gcc -> /usr/bin/ccache
root@max:/usr/local/bin# ./gcc --version
gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@max:/usr/local/bin# 
Run Code Online (Sandbox Code Playgroud)

现在gcc通过ccache以下方式调用:

edd@max:/tmp$ cp -vax ~/src/progs/C/benfordsLaw.c .
`/home/edd/src/progs/C/benfordsLaw.c' -> `./benfordsLaw.c'
edd@max:/tmp$ time /usr/local/bin/gcc -c benfordsLaw.c 

real    0m0.292s
user    0m0.052s
sys     0m0.012s
edd@max:/tmp$ time /usr/local/bin/gcc -c benfordsLaw.c 

real    0m0.026s
user    0m0.004s
sys     0m0.000s
edd@max:/tmp$ 
Run Code Online (Sandbox Code Playgroud)


Bas*_*tch 2

另一种可能性(而不是export CC=ccache由凯尔塔评论),如果在您的before$HOME/bin/中列出,则将创建一个符号链接$PATH/usr/bin/

 ln -s /usr/bin/ccache $HOME/bin/gcc
Run Code Online (Sandbox Code Playgroud)

然后每个execvp(3)都会gcc找到该符号链接