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

时间:2013-02-19 16:17:07

标签: llvm clang

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

我尝试使用clang在Ubuntu下编译我的项目,但不幸的是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,安装它,但我该怎么选择呢? E.g:

$ 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 as命令只存在一次,我没有看到它的命令行选项来选择llvm后端。我错过了什么吗?

3 个答案:

答案 0 :(得分:4)

Clang与LLVM静态链接,所以你不能将这两者区分开来,就像你试图暗示的那样。

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

答案 1 :(得分:0)

由于LLVM 3.2已经发布,我正在使用Ubuntu,这使它无法解决:

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

答案 2 :(得分:0)

我尝试了很多选项,这对我来说最有效。

删除所有现有版本的llvm / clang。要获得完整列表,请运行:

dpkg -l | egrep -i "clang|llvm"

在我的情况下,我必须至少保留“libllvm5.0:amd64”,因为许多软件包依赖它。

http://releases.llvm.org/download.html下载预建版本并验证签名。

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"

另一个选择可能是使用update-alternatives。

#!/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