00-C++-ccache使用

简介: 00-C++-ccache使用

前言

  • 在编译大型C++项目代码时编译时间比较长,那么可以使用ccache来加速代码的编译,一起来学习吧。

ccache是什么

  • ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译的速度。ccache是以空间换取速度,ccache非常适合经常make clean(或删除out目录)后重新编译的情况。
    官网:ccache官方文档

ccache使用

  1. 安装
sudo apt-get install ccache
  • 查看安装位置
    which ccache

  • 查看版本
    ccache -V

  1. 配置
  • 添加环境变量
    sudo vim /etc/profile
export CCACHE_DIR=/home/dh/ccache  
export CCACHE_HARDLINK=true   
export CCACHE_SLOPPINESS=pch_defines,file_macro,time_macros,include_file_mtime,include_file_ctime,file_stat_matches
  • 环境变量生效
    source /etc/profile
  1. ccache 常用命令及配置参数
# 设置缓存大小
ccache -M 50G
# 清空缓存
ccache -C
# 查看缓存信息
ccache -s
# 清空统计
ccache -C -z
export CCACHE_HARDLINK=true              # 如果为true, ccache将尝试使用硬链接来存储和获取缓存的对象文件。默认为false。通过硬链接存储的文件不能被压缩,所以如果启用了这个选项,缓存的大小可能会大得多。性能会提高
export USE_CCACHE=1                        #是否开启ccache,如果不用请设置为0
export CCACHE_COMPRESS=1                   #编译缓存是否压缩,压缩节省空间但性能略低。【 1:压缩 】【 0:不压缩 】
export CCACHE_EXEC=/usr/local/bin/ccache   #ccache的执行程序路径
export CCACHE_DIR=                         #这个是缓存文件路径,默认是 ~/.ccache目录
export CCACHE_SLOPPINESS=pch_defines,file_macro,time_macros,include_file_mtime,include_file_ctime,file_stat_matches  # 忽略时间相关改动
  • 取代编译器
# 修改环境变量
export CC="ccache gcc"
export CPP="ccache cpp"
export CXX="ccache g++"
# 命令行设置
export set CC='ccache gcc'
export set CXX='ccache g++'
export CPP="ccache cpp"
  • CMake中使用ccache
cmake -D CMAKE_CXX_COMPILER="ccache" -D CMAKE_CXX_COMPILER_ARG1="g++" -D CMAKE_C_COMPILER="ccache" -D CMAKE_C_COMPILER_ARG1="gcc"


相关文章
|
Linux C语言
Linux These critical programs are missing or too old: compiler
Linux These critical programs are missing or too old: compiler
2087 0
Linux These critical programs are missing or too old: compiler
|
存储 监控 算法
ClickHouse源码分析-压缩算法大揭秘
ClickHouse在近年来增加了很多压缩算法,最主要的改进还是为了更好的适应时序场景,提高压缩率,节省存储空间。本期就给大家带来ClickHouse的压缩算法介绍。
4945 0
ClickHouse源码分析-压缩算法大揭秘
|
11月前
|
编译器 Linux C语言
深入探讨Linux中的atoi()和itoa()函数
在C语言中,`atoi()`和`itoa()`函数是处理字符串和整数之间转换的重要工具。本文将详细介绍这两个函数的使用方法、用途以及注意事项,帮助读者更好地理解如何在字符串和整数之间进行转换。
623 0
|
JSON 自然语言处理 编译器
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
前言包大小是衡量APP性能的一项重要指标,它直接影响用户的下载点击率(包太大不想下)、下载安装成功率(下载慢不用了)、APP卸载率(太占空间先删掉)。包大小的计算逻辑很简单,它是各种类型的文件占用磁盘大小相加。APP瘦身的技术却很复杂,代码文件的复杂度和编译器策略决定了可执行文件的大小,业务功能和工程架构决定了代码文件的复杂度。iOS APP瘦身,需要掌握的技能有XCode构建技术、LLVM编译器
3146 0
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
|
Shell
Ubuntu20.04安装anaconda并默认激活conda base环境(步骤详细/操作简单实用)
Ubuntu20.04安装anaconda并默认激活conda base环境方法
14923 0
|
12月前
|
关系型数据库 PostgreSQL
PostgreSQL如何删除不使用的xlog文件
PostgreSQL如何删除不使用的xlog文件
132 0
|
12月前
|
NoSQL Shell 测试技术
shell命令行并行神器 - parallel
GNU parallel 是一个 shell 工具,用于使用一台或多台计算机并行执行作业。作业可以是单个命令或必须为输入中的每一行运行的小脚本。典型的输入是文件列表、主机列表、用户列表、URL 列表或表列表。作业也可以是从管道读取的命令。 GNU parallel 然后可以拆分输入并将其通过管道并行传输到命令中。
257 0
|
JSON Unix 数据格式
docker权限不足Got permission denied while trying to connect to the Docker daemon socket at unix:///var/r
docker权限不足Got permission denied while trying to connect to the Docker daemon socket at unix:///var/r
2045 0
|
12月前
|
定位技术 索引
27-Vue之ECharts-通用配置
27-Vue之ECharts-通用配置
|
12月前
|
SQL 存储 关系型数据库
03-MySQL-基础篇-SQL之DDL语句
03-MySQL-基础篇-SQL之DDL语句