ccache - Arch Linux 中文维基

跳至內容

# ccache

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 Ccache，最近一次同步於 2022-10-25，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Ccache 是一個編譯器的包裝，它將已編譯的二進制文件存儲在指定位置，並將其提供給用戶，以加快同一代碼的重新編譯。雖然第一次編譯程序可能要時間長些，但隨後的編譯會快得多，因為不需要進行重複編譯，只需要對之前存儲的二進制文件進行查找。`ccache` 與 GCC 和 Clang 兼容。

## 安裝

安裝位於官方軟體倉庫的 ccache包 軟體包。

## 配置

可以用配置文件修改默認行為，優先級由高到低為:

1. 環境變量
2. 單個 Cache 的配置文件 (`$HOME/.config/ccache/ccache.conf`)
3. 系統配置文件 (`/etc/ccache.conf`)

詳見 ccache(1)。

### 為 makepkg 啟用 ccache

要在 makepkg 啟用 ccache，請編輯 `/etc/makepkg.conf`. 在 `BUILDENV` 中刪除 ccache 前的感嘆號：

     BUILDENV=(fakeroot !distcc color ccache !xdelta)

### 在命令行中啟用

如果要從中命令行編譯而不是生成軟體包，同樣可以使用 ccache 提高速度。

為此，你可以在每個編譯命令前加上 `ccache`。

    $ ccache cc hello_world.c

或者修改你的 `$PATH`，在編譯器的路徑之前加上 ccache 的二進制文件目錄。

    export PATH="/usr/lib/ccache/bin/:$PATH"

你他可以把它設置到你的環境變量裡，方便多次使用。

注意：如果用這個方法，將同時對 makepkg 啟用 ccache。

### 啟用 colorgcc 支持

由於 colorgcc 也是一個編譯器的包裝，所以需要確保包裝的調用順序是正確的。

    export PATH="/usr/lib/colorgcc/bin/:$PATH"    # 按照正常安装 colorgcc 的情况保持不变（不要添加 ccache）

    export CCACHE_PATH="/usr/bin"                 # 告诉 ccache 只使用这里的编译器

colorgcc 需要調用 ccache 而不是真正的編譯器。編輯 `/etc/colorgcc/colorgccrc` 修改所有 `/usr/bin` 路徑為 `/usr/lib/ccache/bin`：

    /etc/colorgcc/colorgccrc

    g++: /usr/lib/ccache/bin/g++
    gcc: /usr/lib/ccache/bin/gcc
    c++: /usr/lib/ccache/bin/g++
    cc: /usr/lib/ccache/bin/gcc
    g77:/usr/bin/g77
    f77:/usr/bin/g77
    gcj:/usr/bin/gcj

新版本的 ccache 在設置 `GCC_COLORS` 時，將始終為GCC啟用顏色支持，同時 Clang 默認啟動多色輸出。如果輸出對象不是 TTY，ccache 會讓編譯器生成顏色，將它們保存在緩存中，但從輸出中剝離。在統一 -fdiagnostics-color 方面仍然存在一些問題。

## Misc

注意：此章節未進行翻譯。

### 修改緩存目錄

可以將緩存目錄 `~/.cache/.ccache` 配置到其它地方，例如 SSD 或 ramdisk:

要在修改當前 shell 的緩存目錄：

    $ export CCACHE_DIR=/ramdisk/ccache

要修改默認緩存目錄：

    ~/.config/.ccache/ccache.conf

    cache_dir = /ramdisk/ccache

### 設置最大緩存大小

默認值是 5G，可以通過配置修改：

    /home/<user>/.ccache/ccache.conf

    max_size = 2.0G

### 通過環境變量禁用緩存

如果你想只在當前的shell中禁用 ccache:

     $ export CCACHE_DISABLE=1

### CLI

此外可以使用 『』ccache『』 命令行工具。

顯示統計數據:

    $ ccache -s

清空緩存:

    $ ccache -C

### makechrootpkg

    devtools包 中 makechrootpkg 也可以使用 ccache，要在清理 chroot 後保留緩存，可以使用 makechrootpkg 的 -d 選項將 cache 目錄從普通系統綁定到 chroot:
    $ mkdir /path/of/chroot/ccache

    $ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache

這樣 chroot 中就可以和正常系統中一樣配置和使用 ccache.

## 注意事項

ccache 只有在編譯完全相同的原始碼時才有效。(或者說是預處理過的源碼）

在 Gentoo Linux 社區，一個基於原始碼的發行版，ccache 因其安慰劑效應、編譯失敗（由於不受歡迎的遺留對象）等而臭名昭著。Gentoo要求在報告編譯失敗之前關閉 ccache。參見 Gentoo:Handbook:Parts/Working/Features#Caching compilation objects 和 the blog post 題為 "Debunking ccache myths"，作者是 Diego Pettenò，一位前 Gentoo 開發者。

## 參閱

- ccache manual

分類：​

- 包開發

ccache
新增話題