如何在 Zesty 中将 Clang 3.9 设置为默认值?

如何在 Zesty 中将 Clang 3.9 设置为默认值?

Zesty 附带了多个版本的 Clang。安装 clang软件包同时依赖clang-3.9安装 clang-3.9clang-4.0安装 clang-4.0。看来默认使用 Clang 4:

$ clang --version
clang version 4.0.0-1ubuntu1 (tags/RELEASE_400/rc1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

但是我需要 Clang 3.9 作为默认版本。我无法编译 UnrealEngine,原因是:

UnrealBuildTool Exception: ERROR: This version of the Unreal Engine can only be
    compiled with clang 3.9, 3.8, 3.7, 3.6 and 3.5. clang 4.0.0 may not build it -
    please use a different version.

我该怎么办?

答案1

添加到已接受的答案:

如果您有多个版本的 clang,那么最好使其clang++依赖于此,clang这样当您切换到不同的 clang 版本时,clang++ 的版本也会随之改变。

你可以使用 选项--slave来做到这update-alternatives一点。例如:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.9 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.9

你当然也可以对其他版本执行此操作:

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-4.0 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-4.0

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-5.0 100 \
   --slave /usr/bin/clang++ clang++ /usr/bin/clang++-5.0

要切换版本,只需输入:

sudo update-alternatives --config clang

输入选择后,clangclang++将自动切换为相同的版本。

同样的想法也适用于GCC如果你也有多个版本,你可以使用此方法来配置gccg++

错误:

update-alternatives:错误:替代 clang++ 不能成为 clang 的从属:它是一个主替代

当您尝试运行上述命令时,可能会出现此错误。不用担心,这只是意味着您已经将clang++其配置为替代方案,因此您需要删除该替代方案,然后上述操作才能生效。您可以使用以下命令执行此操作:

sudo update-alternatives --remove clang++ /usr/bin/clang++-3.9

对每个版本的 clang++ 都执行此操作,然后将其全部删除后再试一次。

资料来源:

答案2

这个答案指出了我正确的方向:

sudo update-alternatives --install \
    /usr/bin/clang++ clang++ /usr/lib/llvm-3.9/bin/clang++ 100
sudo update-alternatives --install \
    /usr/bin/clang clang /usr/lib/llvm-3.9/bin/clang 100

运行这两个命令后,构建就可以继续了。

相关内容