如何将 Clang 9 设置为 Ubuntu 19.10 上的默认 C++ 编译器?

11 default c++ compiler clang 19.10

如何将 Clang 9 设置为 Ubuntu 19.10 上的默认 C++ 编译器?我搜索了互联网,但没有任何帮助。谢谢你的答案 :)

kar*_*rel 17

  1. 从 Ubuntu 19.10 及更高版本的默认 Ubuntu 存储库安装 clang 版本 9。

    sudo apt install clang-9
    
    Run Code Online (Sandbox Code Playgroud)
  2. /usr/bin/c++ 实际上是一个符号链接:

    /etc/alternatives/c++
    
    Run Code Online (Sandbox Code Playgroud)

    这反过来也是一个符号链接:

    /usr/bin/g++
    
    Run Code Online (Sandbox Code Playgroud)

    所以在 Ubuntu c++ 是 g++ 和 g++ 是 g++明确

    将 Clang 9 设置为使用 c++ 的默认 C++ 编译器,以便构建过程仍然可以在需要时显式使用 g++。

    sudo apt install clang-9
    
    Run Code Online (Sandbox Code Playgroud)

运行后sudo update-alternatives --config c++,将出现一个 c++ 版本菜单,您将被要求选择默认的 c++ 版本,如下所示:

Press <enter> to keep the current choice[*], or type selection number:
Run Code Online (Sandbox Code Playgroud)

从菜单中输入一个选择编号,然后按Enter

如果将仿生建议/universe 存储库 ( ) 添加到 Ubuntu 18.04 软件源中,clang-9 也可以安装在 Ubuntu 18.04 中。替换在与贵国的代码。deb http://XX.archive.ubuntu.com/ubuntu/ bionic-proposed universeXXdeb http://XX.archive.ubuntu.com/ubuntu/ bionic-proposed universe

  • 设置更新替代方案是一个糟糕的主意!看起来它可以工作,但几周后,nvidia 或其他一些硬件供应商将推出一个新的内核模块,该模块无法使用 clang 进行编译,并且下次重新启动计算机时会出现黑屏,这需要良好的 Linux 技能才能意识到问题所在。所以,是的,大多数设置更新替代方案的新手都必须随机重新安装他们的系统,并且不知道为什么。 (2认同)

Tej*_*kar 1

第 1 步:安装先决条件

sudo apt-get install build-essential xz-utils curl
Run Code Online (Sandbox Code Playgroud)

步骤 2:下载必要的二进制文件并解压。

curl -SL http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-pc-linux-gnu.tar.xz | tar -xJC
Run Code Online (Sandbox Code Playgroud)

第 3 步:重命名并移动二进制文件。

mv clang+llvm-9.0.0-x86_64-pc-linux-gnu clang_9.0.0
sudo mv clang_9.0.0 /usr/local
Run Code Online (Sandbox Code Playgroud)

第 4 步:告诉我们的系统 clang-9 在哪里

export PATH=/usr/local/clang_9.0.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/clang_9.0.0/lib:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

第 5 步:测试安装

clang++ -stdlib=libc++ -std=c++2a -Wall example.cpp -o example
Run Code Online (Sandbox Code Playgroud)

笔记

Clang 不是 GCC 的一个版本,因此不能将其设置为/usr/bin/gcc. 切勿尝试,您可能会破坏某些需要 Clang 中不可用的 GCC 特定功能的软件包。