如何选择clang使用的LLVM版本?

如何选择clang使用的LLVM版本?,llvm,clang,Llvm,Clang,也许这太明显了,但我还没有看到答案: 我试图在Ubuntu下用clang编译我的项目,但不幸的是llvm因为堆栈转储而崩溃 $ clang --version Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0) Target: i386-pc-linux-gnu Thread model: posix 我想尝试一下LLVM 2.9,安装了它,但我如何选择它?例如: $ ll /usr/bin

也许这太明显了,但我还没有看到答案:

我试图在Ubuntu下用clang编译我的项目,但不幸的是llvm因为堆栈转储而崩溃

$ clang --version
Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0)
Target: i386-pc-linux-gnu
Thread model: posix
我想尝试一下LLVM 2.9,安装了它,但我如何选择它?例如:

$ ll /usr/bin/llvm-ar*
lrwxrwxrwx 1 root root 27 Sep 12 16:43 /usr/bin/llvm-ar -> ../lib/llvm-3.1/bin/llvm-ar*
lrwxrwxrwx 1 root root 27 May 21  2012 /usr/bin/llvm-ar-2.9 -> ../lib/llvm-2.9/bin/llvm-ar*
lrwxrwxrwx 1 root root 27 Aug 27 20:31 /usr/bin/llvm-ar-3.0 -> ../lib/llvm-3.0/bin/llvm-ar*
lrwxrwxrwx 1 root root 27 Aug 28 17:49 /usr/bin/llvm-ar-3.1 -> ../lib/llvm-3.1/bin/llvm-ar*
$ ll /usr/bin/clang*
-rwxr-xr-x 1 root root 12686228 Apr 25  2012 /usr/bin/clang*
lrwxrwxrwx 1 root root        5 Apr 25  2012 /usr/bin/clang++ -> clang*

Clang作为命令只存在一次,我没有看到它的命令行选项来选择llvm后端。我遗漏了什么吗?

Clang与LLVM是静态链接的,因此您无法从这里试图暗示的意义上将两者分开


您可以做的是按照通常的编译器安装说明分别安装Clang 2.9,并用它编译您的项目。

Clang与LLVM静态链接,因此您无法从这里试图暗示的意义上将两者分开


您可以做的是按照通常的编译器安装说明单独安装Clang 2.9,并用它编译您的项目。

由于LLVM 3.2已经推出,而我在Ubuntu上,这可以轻松地修复它:

sudo add-apt-repository ppa:georgekola/clang
sudo apt-get update
sudo apt-get install clang

由于LLVM 3.2已经推出,而我正在使用Ubuntu,因此这项技术可以毫无痛苦地修复它:

sudo add-apt-repository ppa:georgekola/clang
sudo apt-get update
sudo apt-get install clang

我尝试了很多选择,在这里什么最适合我

删除llvm/clang的所有现有版本。要获取完整列表,请运行以下命令:

dpkg -l | egrep -i "clang|llvm"
在我的例子中,我必须至少保留libllvm5.0:amd64,因为许多包都依赖它

从下载预构建版本并验证签名

gpg --verify clang+llvm-[VERSION].tar.xz.sig
将内容解压缩到某个文件夹

sudo tar -xf archive.tar -C /opt/clang+llvm-[VERSION]
在.bashrc的完整末尾添加此行,或手动运行以更改版本

export PATH="/opt/clang+llvm-[VERSION]/bin:$PATH"
另一个选择是使用更新替代方案

#!/bin/bash -ex

DIR=/opt/clang+llvm-[VERSION]/bin

sudo update-alternatives \
--install /usr/bin/clang        clang       "$DIR/clang" 100 \
--slave   /usr/bin/clang++      clang++     "$DIR/clang++"
如果安装了超过1个版本,则使用此命令

sudo update-alternatives --config clang
检查系统是否正确配置

llvm-config --prefix --version
clang --version

我尝试了很多选择,在这里什么最适合我

删除llvm/clang的所有现有版本。要获取完整列表,请运行以下命令:

dpkg -l | egrep -i "clang|llvm"
在我的例子中,我必须至少保留libllvm5.0:amd64,因为许多包都依赖它

从下载预构建版本并验证签名

gpg --verify clang+llvm-[VERSION].tar.xz.sig
将内容解压缩到某个文件夹

sudo tar -xf archive.tar -C /opt/clang+llvm-[VERSION]
在.bashrc的完整末尾添加此行,或手动运行以更改版本

export PATH="/opt/clang+llvm-[VERSION]/bin:$PATH"
另一个选择是使用更新替代方案

#!/bin/bash -ex

DIR=/opt/clang+llvm-[VERSION]/bin

sudo update-alternatives \
--install /usr/bin/clang        clang       "$DIR/clang" 100 \
--slave   /usr/bin/clang++      clang++     "$DIR/clang++"
如果安装了超过1个版本,则使用此命令

sudo update-alternatives --config clang
检查系统是否正确配置

llvm-config --prefix --version
clang --version

但我只有一个叮当声,在ubuntu存储库中我找不到其他的。我想这意味着手动安装:-@Borph:手动安装很容易,因为你可以在项目的网站上找到预编译的Ubuntu二进制文件,但我只有一个叮当声,而在Ubuntu存储库中我找不到任何其他的。我想这意味着手动安装:-@Borph:手动安装很容易,因为你可以在项目的网站上找到预编译的Ubuntu二进制文件,3.2已经发布,尝试2.9没有多大意义。只需下载最新版本,并使用您喜欢的前缀构建它,无论是用于配置的-prefix选项还是用于CMake构建的-DCMAKE_INSTALL_prefix:PATH=which。3.2已经发布,尝试2.9都没有多大意义。只需下载最新版本并使用您喜欢的前缀构建它,对于configure使用-prefix选项,对于CMake构建使用-DCMAKE\u INSTALL\u prefix:PATH=which。