使用cache加快编译速度的命令详解

目录
  • Ubuntu 安装ccache
  • 使用libzmq测试ccache

Ubuntu 安装ccache

  1. sudo apt-get install ccache
  2. 安装完后确认安装执行which ccache
$ which ccache
/usr/bin/ccache

3.在 ~/.bashrc 或者 ~/.zshrc文件内追加以下内容

# ccache
export USE_CCACHE=1
export CCACHE_SLOPPINESS=file_macro,include_file_mtime,time_macros
export CCACHE_UMASK=002

source /.bashrc或者/.zshrc
4. ccache默认设置的5G磁盘空间,正常来说够用,如果担心不够可以改大一些,
ccache -M 30G
5. 通过版本确认安装成功

$ ccache --version
ccache version 3.4.1
Copyright (C) 2002-2007 Andrew Tridgell
Copyright (C) 2009-2018 Joel Rosdahl

6.可以通过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

1.通过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.

2.在 libzmq目录内建立 build目录

3.修改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)

4.在build目录执行cmake ..
打印显示 -- use ccache 表示启用ccache,但需要注意的事,每个项目在第一次启用ccache时,不会加快编译速度,而是把编译缓存保存到 /home/username/.ccache目录,供以后编译使用

$ 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
...

5.使用 /usr/bin/time命令来记录编译耗费的时间

/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

6.rm -rf * 删除build目录内的所有文件

7.重新 cmake ..

8.使用 /usr/bin/time命令来记录编译耗费的时间

/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

到此这篇关于使用cache加快编译速度的文章就介绍到这了,更多相关cache加快编译速度内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Windows下编译PHP和memcache扩展教程

    Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度. 本篇主要简述编译php及其扩展memcache,在阅读后面内容之前,建议先阅读一下官方文档(地址).下面我们以php5.3为例. 一.编译环境 根据你的php版本选择相应的编译器: php 5.3-5.4 :Visual C++ 9.0(Visual

  • 编译php 5.2.14+fpm+memcached(具体操作详解)

    #author:zhxia 给php打上php-fpm 补丁sudo tar jxvf php-5.2.14.tar.bz2sudo patch -d php-5.2.14 -p1 < php-5.2.14-fpm-0.5.14.diff 编译phpcd php-5.2.14/sudo ./configure  --prefix=/usr/local/php-5.2.14 --with-mcrypt --with-gettext --with-mysql --with-gd --with-jpe

  • ubuntu 编译安装php 5.3.3+memcache的方法

    //编译安装php 5.3.3 由于php5.3.X已经自带了php-fpm所以不需要打补丁 # sudo ./configure --prefix=/usr/local/php-5.3.3 --with-mcrypt --with-gettext --with-mysql --with-gd --with-jpeg-dir --with-png-dir --with-curl --with-freetype-dir --enable-gd-native-ttf --enable-mbstrin

  • ubuntu下编译安装xcache for php5.3 的具体操作步骤

    wget http://xcache.lighttpd.net/pub/Releases/1.3.0/xcache-1.3.0.tar.gzsudo tar -xzvf  xcache-1.3.0.tar.gz cd  xcache-1.3.0 sudo /usr/local/php-5.3.3/bin/phpize sudo ./configure --with-php-config=/usr/local/php-5.3.3/bin/php-config sudo makesudo make

  • Linux下memcache编译安装与基本使用教程

    memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.目前用memcache解决互联网上的大用户读取是非常流行的一种用法,在互联网企业中有着广泛的应用. memcache是一套分布式的高速缓存系统,特点为key-value 存储 一.在 linux 编译安装memcache.redis等,需要 gcc,make,cmake,autoconf,libtool 等工具, 直接使用yum安装即可: yum install gcc make cmake aut

  • Gradle Build Cache引发的Task缓存编译问题

    目录 前言 基础知识 Cacheable tasks TaskOutput 有趣的编译问题 问题分析 最后 前言 前一阵子公司内部卷了一篇文章大家有兴趣的可以看下,大概把我们编译优化的原理介绍了下,当然其中还有些技术细节相关的并没有写. 哔哩哔哩Android编译优化. 基础知识 Gradle 构建缓存是一种缓存机制,旨在通过重用其他构建产生的输出来节省时间.构建缓存通过存储(本地或远程)构建输出并允许构建在确定输入没有更改时从缓存中获取这些输出来工作,从而避免了重新生成它们的昂贵工作. 使用构

  • 浅析使用Turck-mmcache编译来加速、优化PHP代码

    php_screw确实很不错,但是只能起到加密的作用,并没有加速和优化的作用.下面我们来看看:Turck MMCache它的作用是通过对php代码的编译来加速.优化php代码,我们如果发布的php代码是经过编译的,也多少能起到一些对代码的保护作用.下面我们对compute.php进行编译看看前后的代码区别,下面是compute.php的源代码<? //============用来循环计算的compute.php文件================// $a=0; $t=time(); for($

  • linux下编译安装memcached服务

    系统:Ubuntu 13.10 第一步:安装libevent-dev $aptitude search libevent-dev $aptitude install libevent-dev 第二步:下载memcached并安装 官网地址:http://memcached.org/ $wget -c http://www.memcached.org/files/memcached-1.4.17.tar.gz $tar -zxvf memcached-1.4.17.tar.gz $cd memca

  • 使用cache加快编译速度的命令详解

    目录 Ubuntu 安装ccache 使用libzmq测试ccache Ubuntu 安装ccache sudo apt-get install ccache 安装完后确认安装执行which ccache $ which ccache /usr/bin/ccache 3.在 ~/.bashrc 或者 ~/.zshrc文件内追加以下内容 # ccache export USE_CCACHE=1 export CCACHE_SLOPPINESS=file_macro,include_file_mti

  • Linux 命令之rsync命令详解

    rsync命令 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的"rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明. 语法 rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]host:DE

  • hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务. 1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase

  • linux 下的yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt

  • Maven 配置文件 生命周期 常用命令详解

    当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂.Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单.gradle有很多开箱即用的插件,语法更加短小精悍,易于理解. 在讲解maven之前这里我们先简单比较下Maven和Ant.下面是一个简单的Ant例子.这个例子可以看出我们需要明确的告诉Ant.我们想让他做什么.

  • Linux curl命令详解

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 语法: # curl [option] [url] 常见参数: -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name=string/file> cookie字符串或文件读取位置 -c/--cookie-jar <file> 操作

  • linux ss命令详解

    ss 是 Socket Statistics 的缩写.ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似.但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快.当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢.ss 命令利用到了 TCP 协议栈中 tcp_diag.tcp_diag 是一个用于分析统计的模块,可以获得 L

  • linux free命令详解

    本文介绍了linux free命令详解,分享给大家,具体如下: free 命令显示系统内存的使用情况,包括物理内存.交换内存(swap)和内核缓冲区内存. 如果加上 -h 选项,输出的结果会友好很多: 有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数: $ free -h -s 3 上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c. (Ubuntu 16.04 中默认的 free 版本有 bug,使用 -s 选项时报错,所以这张图是在 Cent

  • Linux常用ls, alias基础命令详解

    ls命令 作用:列举目录文件信息( list directory content ) 格式:ls [option] [file] 1,命令不跟任何选项与目录,表示列举当前目录的文件信息 ghostwu@dev:~$ ls Desktop examples.desktop linux Pictures python Videos Documents git_test Music project software Downloads info php Public Templates 2,ls -l

  • Linux应用调试使用gdb和gdbserver命令详解

    1.gdb和gdbserver调试原理 通过linux虚拟机里的gdb,来向开发板里的gdbserver发送命令,比如设置断点,运行setp等,然后开发板上的gdbserver收到命令后,便会执行应用程序做相应的动作,来实现调试的功能 和之前学的裸板GDB调试 一样,只不过之前学的是在win下的,本次是在linux里的gdb 1.1同样,它们都会需要一个带调试信息的编译文件. 通过Makefile里的arm-linux-gcc  -g 来的,     -g:表示编译文件里包含gdb调试信息 1.

随机推荐