ccacheを使用してgccコンパイル速度を大幅に加速


  • Author:Echo Chen(陳斌)
  • Email:[email protected]
  • 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//.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 update
        brew install ccache

    brew ccacheは/usr/local/binにインストールされ、このパスが$PATHにあることを確認します.
    ccacheキャッシュサイズを設定するには、10 G を超えることが望ましい.
        ccache -M 200G
        ccache -s

    キャッシュスペース200 Gを設定しましたが、build-machineには十分なはずです.ccache-sはccacheの動作状態を表示できます
    CCACHE変数を追加 変更.bashrc or.bash_profile
        export NDK_CCACHE=ccache
        export USE_CCACHE=1

    build_の変更native.sh. その中のndk-build-j 3...を ndk-build -j16 
    クアッドコアcpu配置8,16,32はすべてできて、自分の習慣を見て次のコードの -j16
    # run ndk-build
    if [[ "$buildexternalsfromsource" ]]; then
            echo "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"
        else
            echo "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-j 16スクリプトを作成します.内容は後述です.
    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 name
     
    options=()  # the buffer array for the parameters
    eoo=0       # end of options reached
     
    NDKBUILD_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
     
    while [[ $1 ]]
    do
        if ! ((eoo)); then
        case "$1" in
          -j[0-9]+)
                shift
                ;;
           --)
                eoo=1
                options+=("$1")
                shift
                ;;
           *)
                options+=("$1")
                shift
                ;;
           esac
        else
            options+=("$1")
     
        # Another (worse) way of doing the same thing:
        # options=("${options[@]}" "$1")
        shift
        fi
    done
     
    $NDKBUILD_DIR/ndk-build.orig -j16 "${options[@]}"

    -
    Echo Chen:Blog.csdn.net/chen19870707
    -