Zesty 附带多个版本的 Clang。该铛包依赖于clang-3.9
和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
Run Code Online (Sandbox Code Playgroud)
但是,我需要 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.
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
sma*_*c89 11
为了建立在公认的答案上,如果您有多个版本的 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
Run Code Online (Sandbox Code Playgroud)
您当然可以为其他版本执行此操作:
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
Run Code Online (Sandbox Code Playgroud)
要切换版本,您只需键入:
sudo update-alternatives --config clang
Run Code Online (Sandbox Code Playgroud)
输入选择两者clang并clang++会自动切换到相同的版本。
同样的想法适用于GCC如果您也有多个版本,则可以使用此方法来配置gcc和g++.
更新替代:错误:替代 clang++ 不能成为 clang 的奴隶:它是主替代
当您尝试运行上述命令时,您可能会收到此错误。不用担心,这只是意味着您已经将clang++其配置为自己的替代方案,因此您需要在上述方法生效之前删除该替代方案。您可以使用以下命令执行此操作:
sudo update-alternatives --remove clang++ /usr/bin/clang++-3.9
Run Code Online (Sandbox Code Playgroud)
对每个版本的 clang++ 执行此操作,然后将它们全部删除后,再试一次。
这个答案为我指明了正确的方向:
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
Run Code Online (Sandbox Code Playgroud)
运行这两个命令后,构建能够继续。
| 归档时间: |
|
| 查看次数: |
8557 次 |
| 最近记录: |