• Author:Echo Chen(陈斌)
  • Email:chenb19870707@gmail.com
  • Blog:Blog.csdn.net/chen19870707
  • Date:May 9th, 2013

Explain

在做游戏服务器时,由于耦合度较高,每次编译都需要编译整个工程,非常耗时,偶然的发现了ccache,安装使用了一下,果然神奇,原来需要5分钟编译的工程1分钟可以编译完成,很好用,下面mark一下ubuntu下安装使用方法。

  • 安装ccache
 sudo apt-get install ccache
  • 查看ccache 安装位置
whereis ccache

查看安装路径, /usr/bin/ccache

  • 创建gcc,g++链接
mkdir ~/.bin
cd ~/.bin/
ln -s /usr/bin/ccache gcc
ln -s /usr/bin/ccache g++

  • PATH设置,更改本地.bashrc文件,修改gcc,g++链接到ccache
 vim ~/.bashrc
添加 export PATH="/home/<user>/.bin:$PAHT
  • 确认是否生效
which g++
如果是/home/<user>/.bin/g++就成功了;
直接编译项目,是不是飞一样的感觉,

xcode ccache加速:https://stackedit.io/viewer#!provider=gist&gistId=bace97f64151a503b824&filename=speedup-xcode-via-ccache-zhzheng-1.md

此外ccache也支持android(MacOS)

  • 安装Homebrew Google之
    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"brew updatebrew install ccache

brew 会把ccache安装到/usr/local/bin,确保这个路径在你的$PATH中

  • 设置ccache缓存大小,最好超过10G
    ccache -M 200Gccache -s

我设置了缓存空间200G,对build-machine应该足够了。ccache -s可以查看ccache的运行状态

  • 增加CCACHE变量 修改.bashrc or .bash_profile
    export NDK_CCACHE=ccacheexport USE_CCACHE=1
  • 修改build_native.sh. 将其中的ndk-build -j3…改为 ndk-build -j16

    • 四核cpu配置8,16,32都可以,看自己习惯
    • 注意下面代码中的 -j16
# run ndk-build
if [[ "$buildexternalsfromsource" ]]; thenecho "Building external dependencies from source""$NDK_ROOT"/ndk-build -j16 -C "$APP_ANDROID_ROOT" $* \"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/source"elseecho "Using prebuilt externals""$NDK_ROOT"/ndk-build -j16 -C "$APP_ANDROID_ROOT" $* \"NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt"

下面内容可以忽略

如果不想修改native_build.sh,也可以通过修改ndk-build工具达到强制gcc并行编译的数量。操作步奏如下

  • 创建ndk-build-j16脚本,内容在后面
  • ndk-build-j16 我放到了~/bin中,也可以直接放到$NDK_ROOT/中
  • chmod +x ~/bin/ndk-build-j16, only once
  • ln -s $HOME/bin/ndk-build-j16 $NDK_ROOT/bin/ndk-build-j16
  • mv -v $NDK_ROOT/ndk-build ndk-build.orig
  • ln -s $NDK_ROOT/ndk-build-j16 $NDK_ROOT/ndk-build

~/bin/ndk-build-16 的文件内容,记得chmod +x

#!/bin/bash
# ndk-build wrapper, for ignore -jN options
# this file should put into $NDK_ROOT
# mv -v $NDK_ROOT/ndk-build ndk-build.orig
# ln -s $NDK_ROOT/ndk-build-j16 $NDK_ROOT/ndk-build
# ndk-build-j16 is current script nameoptions=()  # the buffer array for the parameters
eoo=0       # end of options reachedNDKBUILD_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"while [[ $1 ]]
doif ! ((eoo)); thencase "$1" in-j[0-9]+)shift;;--)eoo=1options+=("$1")shift;;*)options+=("$1")shift;;esacelseoptions+=("$1")# Another (worse) way of doing the same thing:# options=("${options[@]}" "$1")shiftfi
done$NDKBUILD_DIR/ndk-build.orig -j16 "${options[@]}"

使用ccache大幅度加速gcc编译速度相关推荐

  1. ubuntu 使用ccache加快linux内核编译速度

    调试内核模块时候需要编译内核,简单加个打印都需要40分钟左右,这种速度令人无法容忍,一定会有方法的.Google了一下,有人给出了ccache方案,ccache也是采用gcc编译,不过它保存了gcc的 ...

  2. 加速LaTeX编译速度:使用VScode远程工具Remote-SSH在Linux系统上编译LaTeX

    由于在Windows中编译LaTeX的速度要远低于在LInux中编译速度,但我们可能经常需要在Windows系统上办公,因此有没有一种方法可以在Windows中用LaTeX写文章同时享受Linux的编 ...

  3. iOS - Xcode提高编译速度,增量编译,ccache

    前言 贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60 ...

  4. iOS之性能优化·提高App的编译速度

    一.前言 经过多年的开发和迭代,我相信很多的 iOS 项目代码已经达到几十万行甚至上百万行的规模,所使用的 Pod 库的数量可以达到几十个甚至上百个,App Store 安装包也变得越来越大,在这么大 ...

  5. iOS编译速度如何稳定提高10倍以上

    Github开源地址,一步一步教你怎么使用 一.概述 经过多年的发展,美柚iOS项目代码已经达到40W行+的规模,所使用的 Pod 库的数量达到了110+,App Store 安装包210M+,在这么 ...

  6. [贝聊科技]如何将 iOS 项目的编译速度提高5倍

    前言 贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60 ...

  7. 提高安卓源码编译速度

    1.设置ccache 搭建编译环境 | Android 开源项目 | Android Open Source Project 使用 ccache 优化c/c++ 编译速度 2.使用make -jxx进 ...

  8. 提高编译速度的方法——ccache的使用

    在使用CMake编译大型工程时.如果每次只是单独对一个文件进行修改还好,CMake可以针对修改单独编译,但往往只要对CMakeLists做一点小修改,整个工程就要重新编译,对于普通性能的电脑来说通常非 ...

  9. 提升g++的编译速度的第一选择:ccache

    我现在就职公司的应用,unix环境,用到了ace(Adaptive Communication Environment),基本使用c++开发,支持oracle.sybase.db2三种数据库,g++编 ...

最新文章

  1. 隐马尔科夫模型之Baum-Wech算法
  2. kafka的topic和分区策略——log entry和消息id索引文件
  3. dede单独显示查到了多少条记录的方法
  4. 【译】Introduction to Byteball — Part 2: The DAG
  5. sublime关于行操作的快捷键:如快速复制整行等
  6. 第三次学JAVA再学不好就吃翔(part16)--方法及方法重载
  7. PHP中如何防止直接访问或查看或下载config.php文件
  8. (转)Extjs4 展示图片与图片的更新
  9. 谭浩强C语言(第三版)习题5.7
  10. 对国产操作操系统的一点看法
  11. React Antd4 CRA / Next.js / Vite 按需加载组件的 CSS / Less
  12. running_mean和running_var
  13. 佳能c3020维修模式 白电平调整_佳能5d3 如何调色温
  14. C#使用表达式树不能包含动态操作,使用反射的方式来实现T类型
  15. 7个快速登录Gmail的技巧
  16. Databricks 第1篇:初识Databricks,创建工作区、集群和Notebook
  17. 【第90题】JAVA高级技术-网络编程9(简易聊天室4:获得Socket)
  18. 读书百客:《绮罗香·咏春雨》赏析
  19. 解决kubernetes宿主机top cpu wa io过高引起的cpu资源耗尽问题
  20. FPGA|数字图像处理实现口罩识别——二值化

热门文章

  1. 计算机专业课程计划,计算机专业课程表(教学计划)
  2. Python机器学习:一元回归
  3. 虚数的现实、物理意义是什么?
  4. php 2038,php在2038年后datetime类也无法获得当前日期的解决
  5. Win7 Iphone4手机通过电脑上网设置 开机自动打开WIFI
  6. Mezzanine学习---使用自定义模板
  7. 高德地图自定义地图怎么去除最上边这个默认的蓝色天空?太丑了!!
  8. 计算机为什么会出现网络用户,电脑登陆QQ经常提示异地登陆是怎么回事?
  9. win7总是显示加载计算机,win7系统打开“此电脑”很慢总是在加载不显示的具体办法...
  10. 对于刚毕业的学弟学妹对即将要就业产生迷茫,下面我来为大家揭晓该如何选择!