在GNU/Linux上启用ccache
的文档很少。这是launchpad.net的响应:
目前,我认为启用CCACHE的最好方法是添加 "/usr/lib/ccache"到您的路径的前部。如果您想启用它 对于所有用户默认情况下,更改路径变量 /etc/环境。
有人可以给我更多有关启用ccache
的信息吗?
下载最新版本的CCache以获得更好的性能。
下载后,请按照以下提到的步骤操作:
a)使用以下命令:
tar tar文件。 $tar -xvf ccache-3.2.4.tar.bz2
Note : I'm using ccache 3.2.4 Version.You can download the latest one.
b)进入CCACHE-3.2.4文件夹并运行以下命令:
$./configure
$./make
$ sudo make install
c)转到您的.bashrc并插入以下内容:
export CCACHE_DIR=/home/user_name/.ccache
export CCACHE_TEMPDIR=/home/user_name/.ccache
Note : Fill user_name with your User Name
d)保存您的bashrc并来源
$ source ~/.bashrc
e)检查CCACHE是否有效或不键入:
ccache -M 10G : To Set the ccache Size to 10GB
f)检查CCACHE是否有效还是不键入:
ccache -s : To check ccache statistics
CCACHE手册具有一个名为"运行模式"的部分,该部分描述了激活CCACHE的官方方法,因此我建议阅读该手册。
另外,正如您已经指出的那样,Linux发行版通常设置A/usr/lib/ccache目录,该目录被设计为备用路径。
至少有两种方法:
i)覆盖 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
这也使我可以在gcc
版本之间来回切换。现在所有涉及r的汇编都使用ccache
。
ii)对于其他用途,我已经部署了一个事实,即在/usr/bin
之前检查了/usr/local/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#
现在通过ccache
调用gcc
:
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$
另一种可能性(而不是keltar评论的export CC=ccache
),如果$HOME/bin/
在/usr/bin/
之前列出了$PATH
,则是制作Symlink
ln -s /usr/bin/ccache $HOME/bin/gcc
然后, gcc
的每个execvp(3)都会发现Symlink
ubuntu安装ccache
- sudo apt-get安装ccache
- 安装后确认安装执行;
$ which ccache
/usr/bin/ccache
- 将以下内容添加到"〜/.bashrc"中。或"〜/.zshrc ==&quot"文件
# ccache
export USE_CCACHE=1
export CCACHE_SLOPPINESS=file_macro,include_file_mtime,time_macros
export CCACHE_UMASK=002
source;〜/.bashrc; 或&quort;〜/.zshrc; ;4. CCACHE默认设置的5 GB磁盘空间通常足够。如果您担心它,可以增加它, CCACHE -M 30G 5.通过版本确认成功安装
$ ccache --version
ccache version 3.4.1
Copyright (C) 2002-2007 Andrew Tridgell
Copyright (C) 2009-2018 Joel Rosdahl
- 您可以通过 CCACHE查看当前配置-S
cache directory /home/username/.ccache
primary config /home/username/.ccache/ccache.conf
secondary config (readonly) /etc/ccache.conf
stats zero time Fri Jul 22 16:15:40 2022
cache hit (direct) 4186
cache hit (preprocessed) 875
cache miss 1069
cache hit rate 82.56 %
called for link 653
cleanups performed 0
files in cache 3209
cache size 159.3 MB
max cache size 30.0 GB
使用libzmq测试CCACHE
- 通过 github 下载 libzmq的源代码
$ git clone https://github.com/zeromq/libzmq.git
Cloning into 'libzmq'...
remote: Enumerating objects: 43791, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 43791 (delta 11), reused 24 (delta 8), pack-reused 43755
Receiving objects: 100% (43791/43791), 21.91 MiB | 1.03 MiB/s, done.
Resolving deltas: 100% (31951/31951), done.
- 在 libzmq 目录中创建 build 目录
- 修改 cmakelists。txt ,' '添加
──────┬───────────────────────────────────────────────────────────────────────────────────────
│ File: CMakeLists.txt
───────┼──────────────────────────────────────────────────────────────────────────────────────
1 │ # CMake build script for ZeroMQ
2 │ project(ZeroMQ)
3 │
4 │ if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
5 │ cmake_minimum_required(VERSION 3.0.2)
6 │ else()
7 │ cmake_minimum_required(VERSION 2.8.12)
8 │ endif()
9 │
10 + │ find_program(CCACHE_FOUND ccache)
11 + │ if(CCACHE_FOUND)
12 + │ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
13 + │ set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
14 + │ message(STATUS "use ccache")
15 + │ endif(CCACHE_FOUND)
16 + │
17 │ include(CheckIncludeFiles)
- 执行;打印和显示** - 使用ccache"**表示Enable CCACHE ,但请注意,当每个项目启用 CCACHE 时,它将不会加快汇编速度,而是将编译缓存保存到"/home/username/。缓存" 以后的汇编目录
$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- use ccache
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
...
- 使用"/usr/bin/time&quot" 命令记录汇编时间
/usr/bin/time make -j3
result:
48.79user 14.25system 0:21.60elapsed 291%CPU (0avgtext+0avgdata 176036maxresident)k
0inputs+282248outputs (0major+2406923minor)pagefaults 0swaps
- 'rm -rf *&quort' delete build 目录中的所有文件
- cmake ..
- 使用"/usr/bin/time&quot" 命令记录汇编时间
/usr/bin/time make -j3
result:
2.78user 2.42system 0:02.15elapsed 241%CPU (0avgtext+0avgdata 23736maxresident)k
0inputs+21744outputs (0major+232849minor)pagefaults 0swaps
https://www.cnblogs.com/jiangyibo/p/16516932.html