我想使用clang ++而不是g ++来编译我的c ++文件,而g ++是系统的默认编译器。
我已尝试sudo update-alternatives --install c++ c++ /home/guo/bin/clang++ 100
并设置CC
环境。但它们不起作用。 Bazel仍然使用g ++作为编译器。
ERROR: /home/guo/utils/lib/BUILD:2:1: C++ compilation of rule '//utils/lib:get_pdf' failed: linux-sandbox failed: error executing command /home/guo/.cache/bazel/_bazel_guo/d2d93a82f24e8dc5485ac1b29928428e/execroot/_bin/linux-sandbox ... (remaining 41 argument(s) skipped).
src/main/tools/linux-sandbox-pid1.cc:592: "execvp(/home/guo/lib/clang, 0x23abde0)": Permission denied
Target //utils/lib:get_pdf failed to buildenter code here
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.159s, Critical Path: 0.06s
Ps:/home/guo/lib/clang
是一个目录,而不是我计算机中的二进制文件。我想这里应该是/home/guo/bin/clang++
,但我不知道如何让Bazel
知道它。
Bazel
服务器。
答案 0 :(得分:4)
因此,为Bazel配置C ++工具链的正确方法是使用CROSSTOOL。因为那是nontrivial endeavor,Bazel会尝试使用cc_configure.bzl脚本自动检测您的工具链。此脚本检查一些环境变量,如果存在,它将使用那里的值。要配置gcc,您可以设置CC
变量,Bazel会接受它(in _find_cc function)。
在缓存这些结果时,运行bazel clean --expunge
以刷新缓存并在下次重新运行自动配置。