【问题标题】:clang + icecc + ccache铿锵 + icecc + ccache
【发布时间】:2013-04-03 12:37:19
【问题描述】:

我正在尝试使用 clang + icecc + ccache 构建。但我无法让它工作。我在同一个网络上使用 gcc + 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 中有 clang 符号链接:

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

我在 /usr/lib/icecc/bin 中有 clang 符号链接:

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

所以这是我尝试过的:

我尝试在我的 PATH 环境变量中将 ccache 作为第一个:

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 不同的东西)。

谢谢。

【问题讨论】:

    标签: cmake clang ccache


    【解决方案1】:

    要将 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。

    ccache manualUsing ccache with other compiler wrappers 部分了解更多信息。

    【讨论】:

    • 你是说icecc 的路径应该在PATH变量中?!
    • /usr/lib/icecc/bin 不应在 PATH 中。但是/usr/bin(或存储真正的icecc 二进制文件的任何地方)应该在PATH 中,以便ccache 可以找到icecc 二进制文件。
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多