2013-04-03 60 views
3

我正嘗試用clang + icecc + ccache構建。但我無法讓它工作。我在同一個網絡上成功構建了gcc + icecc + ccache。clang + icecc + ccache

下面是軟商品版本:

Clang version : Ubuntu clang version 3.2-9 (tags/RELEASE_32/final) (based on LLVM 3.2) 
ccache version : 3.1.7 
icecc version : ICECC 0.9.7 

我在/ usr/lib中/ ccache的鐺符號鏈接:

$ ls -l /usr/lib/ccache/clang* 
/usr/lib/ccache/clang -> ../../bin/ccache* 
/usr/lib/ccache/clang++ -> ../../bin/ccache* 

我在/ usr/lib中/ ICECC/bin中鐺符號鏈接:

$ ls -l /usr/lib/icecc/bin/clang* 
/usr/lib/icecc/bin/clang -> ../../../bin/icecc* 
/usr/lib/icecc/bin/clang++ -> ../../../bin/icecc* 

所以這是我曾嘗試:

我試過有ccache的作爲第一個在我的PATH的環境變量:

export PATH=/usr/lib/ccache:/usr/lib/icecc/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

,但它只是不分發編譯。

我試過有ICECC作爲第一:

export PATH=/usr/lib/icecc/bin/:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

,這讓我這個輸出:

ICECC[5240] 14:27:17: icecream seems to have invoked itself recursively! 

根據此線程https://bugzilla.redhat.com/show_bug.cgi?id=377761這是正常的。

我已經試過只具有ICECC:

export PATH=/usr/lib/icecc/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

,但它只是不分發編譯。

所以我有點卡在這裏,我找不到任何說不可能的東西,所以如果有人有解決方案或替代解決方案(不同於icecc)。

謝謝。

回答

2

要將ccache與其他編譯器包裝器一起使用,請將CCACHE_PREFIX設置爲其他包裝器。你的情況:

export PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
export CCACHE_PREFIX=icecc 

這是有幾個原因更好:

  • 它的實際工作。
  • 編譯器升級將被正確檢測。
  • 緩存的結果將在有和沒有icecc的編譯之間共享。
  • 運行預處理器時,ccache不會不必要地調用icecc。

瞭解更多Using ccache with other compiler wrappers部分的ccache manual

+0

你是說'icecc'的路徑不應該在PATH變量中?! – piwi