2

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

我尝试在 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 后端。我错过了什么吗?

4

3 回答 3

5

Clang 与 LLVM 静态链接,因此您无法在此处尝试暗示的意义上将两者分开。

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

于 2013-02-19T20:46:41.903 回答
1

我尝试了很多选择,这里最适合我。

删除所有现有版本的 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"

另一种选择可能是使用更新替代方案。

#!/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
于 2017-09-13T20:47:51.807 回答
0

由于 LLVM 3.2 已经发布并且我在 Ubuntu 上,因此可以轻松修复它:

sudo add-apt-repository ppa:georgekola/clang
sudo apt-get update
sudo apt-get install clang
于 2013-03-16T11:26:51.087 回答