00-C++-ccache使用

ccache使用

      • 前言
      • ccache是什么
      • 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"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聊聊不同集群的微服务如何通过feign调用

前言 之前业务部门的某项目微服务调用关系如下图 后因业务改造需要,该项目需要将服务A部署到另外一个集群,但服务A仍然需要能调用到服务B,调用关系如下图 之前调用方式是负责服务B的开发团队提供相应的feign客户端包给到服务A开发团队&…

k8s 第一篇 基础知识

一 k8s 1.1 概念 k8s 是一个能让应用部署到容器中,实现自动部署和管理更加高效 自能化的平台。 也就是说通过k8s,能够进行应用的自动化部署和扩容。 1.2 集群的架构流程 1.3 k8s的核心概念 1.4 k8s 集群规划 从第6集开始看

基于OpenCV 实现车牌号码识别--附免费源码

在本教程中,您将学习如何使用 OpenCV 和 EasyOCR 包自动执行车牌/车牌识别 (LPR/NPR)。 EasyOCR是一个开源 Python 包,用于执行光学字符识别 - OCR(从图像中提取文本)。 该软件包非常易于使用,在撰写本文时,它支持 80 多种语言,包括中文、阿拉伯语、法语、英语、西里尔…

MySQL-SQL全部锁详解(上)

​♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#x…

金山企业版杀毒软件平台“终端安全系统V9”linux客户端不能注册的问题解决方法。

金山企业版杀毒软件平台“终端安全系统V9”,出现部分Linux客户端安装后无法注册到服务器的问题,本文提供了一种问题解决方法。 一、平台版本 平台为金山企业版杀毒软件平台“终端安全系统V9”: 平台端版本为V9.SP2.E1004 客户端安装包&…

50从零开始学Java之万类之王Object是怎么回事?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前面的文章中,壹哥跟大家说过,Java是面向对象的编程语言,而在面…

langchain调用chatGLM2纪实

一、科学上网要注意: 域名全代和全局代理(网卡),都要打开。这样conda install特别快。 二、安装langchain 1、 conda install langchain 2、 conda install openai 注意: 使用pip install和conda install 是不同…

SpringBoot使用EasyExcel批量导出500万数据

SpringBoot使用EasyExcel批量导出500万数据 说明excel版本比较EasyExcel介绍项目目录mysql对应表建表语句pom.xmlapplication.yml配置类启动类代码OrderInfo 实体类OrderInfoExcel excel模版标题类(EasyExcel需要使用这个)TestController控制层接口层TestServiceTestServiceImp…

十五、docker学习-docker核心docker数据卷

什么是数据卷 当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布&…

创建启动前端vue与后端python/flask,前后端分离,相互传递参数

创建启动vue 确保你已经安装了Node.js和npm 安装vue npm install -g vue/cli创建vue项目: vue create my-project cd my-project启动vue npm run serve如果安装vue报错:管理员权限模式打开powershell Windows PowerShell 版权所有(C&#…

斐波那契数列

目录 斐波那契数列 斐波那契数列和黄金分割率的关联 解析表达式 练习 斐波那契数列 一个人将一对兔子放到一个封闭的围墙内,并假设每对兔子每个月都繁殖出一对兔子,且新生兔子从第二个月开始有繁殖能力,那么一年以后这个封闭的围墙内有多…

kotlin Flow系列之 - 冷流SafeFlow源码解析之 - Safe在那里?

本文涉及源码基于kotlinx-coroutines-core-jvm:1.7.1 kotlin 协成系列文章: 你真的了解kotlin中协程的suspendCoroutine原理吗? Kotlin Channel系列(一)之读懂Channel每一行源码 kotlin Flow系列之-冷流SafeFlow源码解析之 - Safe在那里? ko…

vue el-table的每行操作el-button添加单独的loading效果实现

vue el-table的每行操作el-button添加单独的loading效果实现 效果图&#xff1a;实现代码&#xff1a;结语 效果图&#xff1a; 实现代码&#xff1a; <tamplate><el-table :data"list" ><el-table-column fixed"right" label"操作&q…

服务负载均衡Ribbon

服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具&#xff0c;它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署…

启动网站调试提示 HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容。

启动网站调试提示 HTTP 错误 403.14 – Forbidden Web 服务器被配置为不列出此目录的内容。 解决方案第一种.在网站的配置文件里添加第二种.ISS管理界面修改 解决方案 第一种.在网站的配置文件里添加 <system.webServer><directoryBrowse enabled"true" /&…

STM32+PWM+输入捕获测频

外部时钟&#xff0c;主频64M 定时器1 通道1发出PWM波 频率1K 定时器2 通道1输入捕获&#xff0c;上升沿触发 串口 /* USER CODE BEGIN 0 */ uint32_t time_up_num0;//上升沿计数 float time_frequency;//频率 /* USER CODE END 0 */ 初始换打开定时器 /* USER CODE BEGIN 2 …

跑深度学习nvidia驱动忽然实效的详细解决方法

由于经常跑深度学习&#xff0c;所以对于显卡驱动什么的都还是整的比较明白的不含糊&#xff0c;所以都能跑的起来。但是今天跑pytorch框架时&#xff08;用到cuda&#xff09;忽然给我报了个错&#xff1a; RuntimeError: No CUDA GPUs are available这给我整不会了&#xff…

解决uni-app微信小程序底部输入框,键盘弹起时页面整体上移问题

存在问题 做了一个记录页面&#xff08;类似单方聊天页&#xff09;&#xff0c;输入框在底部&#xff1b;当弹出键盘时&#xff0c;页面整体上移&#xff0c;页面头信息会消失不见 需要实现效果&#xff1a; 比如一个记录页面&#xff0c;需要在键盘弹出时&#xff1a; 底…

【SQL】群辉 NAS 安装 Mysql 远程访问连接

群辉安装MySQL具有高效、安全、可靠、灵活等优势&#xff0c;可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#xff0c;可以保障MySQL数据库的高效运行和数据安全. cpolar 是一款内网穿透工具,通过简单的设置,我们即可实现远程访问群辉中mysq…

微信为什么使用 SQLite 保存聊天记录?

概要 SQLite 是一个被大家低估的数据库&#xff0c;但有些人认为它是一个不适合生产环境使用的玩具数据库。事实上&#xff0c;SQLite 是一个非常可靠的数据库&#xff0c;它可以处理 TB 级的数据&#xff0c;但它没有网络层。接下来&#xff0c;本文将与大家共同探讨 SQLite 在…