在ubuntu上安装llvm和clang


16

因此,我正在尝试在Ubuntu 12.04(64位)上安装Halide。我需要安装llvm-3.2和clang。

运行sudo apt-get install llvm-3.2最终以“找不到软件包”结束。

尝试sudo apt-get install llvmsudo apt-get install clang安装2.9版本。Google为此提供了帮助

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

现在,sudo apt-get install llvm-3.2 clang-3.2工作。但是当我在Halide文件夹中运行make时,仍然出现clang:Command找不到。


2
我认为“ clag:Command not found”应该读为“ clang:Command not found”?
andyg0808 2013年

是的,对此感到抱歉

您是使用具有GUI的Ubuntu还是仅具有命令行的Ubuntu?
andyg0808 2013年

另外,您是否需要clang 3.2或仅clang 3+?
andyg0808 2013年

我下载了桌面版。我实际上需要llvm 3.2,没有关于clang版本的消息。

Answers:


9

好了,我成功地通过安装编译在Ubuntu 13.04卤化物llvmclangbuild-essential。对于您的问题,我的唯一猜测是您安装的PPA的LLVM或clang可能无法正常运行。通过所谓的“建议”归档文件,似乎可以从Ubuntu 12.04中获得LLVM 3.2。您可以尝试清除现有的LLVM并从“建议的”中安装它。我将在下面说明如何执行此操作。既然您提到过您是Ubuntu的新手(在原始问题版本中),我将尽我所能首先解释您已经使用的每个命令的功能。

因此,sudo apt-get install llvm-3.2尝试安装llvm-3.2从系统上当前启用的存储库中命名的软件包。在您的情况下,找不到它,因此命令失败。sudo apt-get install llvm安装了该llvm软件包,这可能是一个特殊的软件包,它仅使用标准存储库中提供的最新LLVM。在您的情况下,该值为2.9。同样的想法也适用于sudo apt-get install clang。在您的系统中sudo add-apt-repository ppa:kxstudio-team/builds 添加所谓的个人包裹档案或PPA。这使您可以从另一个存储库或软件源中获取更多软件。有关更多信息,请参见https://help.launchpad.net/Packaging/PPA。最后,sudo apt-get update告诉Ubuntu从当前可用的存储库中获取有关哪些软件包可用的信息。您可以查看http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html,以获取有关Debian中软件包管理的更多信息(其中大多数也应适用于Ubuntu,因为Ubuntu是基于Debian的)。

因此,删除精确安装的软件包并安装可用版本的步骤如下:

  1. 用于sudo apt-get purge llvm-3.2 clang-3.2从系统中完全删除LLVM和clang。
  2. (可选)用于sudo add-apt-repository --remove ppa:kxstudio-team/builds从系统中删除PPA。
  3. 请按照https://wiki.ubuntu.com/Testing/EnableProposed上的说明启用建议的归档文件(在页面顶部),并按照“从-proposed选择性升级”的说明进行操作。第一部分将启用该llvm-3.2软件包的实际Ubuntu版本,第二部分将使系统避免尝试将所有内容升级到建议版本。
  4. sudo apt-get update拉的什么包和版本,现在得到的信息。
  5. 使用sudo apt-get install llvm-3.2/precise-proposed安装LLVM 3.2,并使用sudo apt-get install clang/precise-proposed安装锵3.0(我认为这是你应该得到的版本)。
  6. 新的一步:待办事项sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-config,使系统治疗llvm-config-3.2(也就是llvm-config与来llvm-3.2)作为llvm-config。更完整地说,这将在Ubuntu将要查找程序的另一个地方创建指向llvm-config-3.2 的符号链接(或符号链接)(更多信息:lnFHSPATH)。因此,当您运行“ llvm-config”时,Ubuntu将找到符号链接并运行指向(llvm-config-3.2)的程序。
  7. 查看现在是否一切正确编译。

希望那行得通。我没有测试过任何一个,因此使用后果自负,依此类推。但是,我敢肯定,它不会做任何可怕的事情。

编辑:请注意,llvmllvm-3.2是独立的。llvm取决于llvm-2.9请参阅此处),llvm-3.2而是分开的(请参阅此处的依赖项

另外,我不确定您是否知道制表符补全;如果您要查找命令但不太了解名称(例如,在这种情况下,它可能表明已llvm-config被称为llvm-config-3.2)。


非常感谢!几乎成功了。唯一的问题是已安装的llvm-3.2没有llvm-config。因此,当我在Halide中运行make时,它会告诉您未安装llvm。我运行了llvm,现在llvm-config --version表示2.9。如果我尝试安装llvm-3.2,它会告诉我它是最新版本。看来llvm-3.2和llvm是完全独立的。

查看答案中的新步骤;您可能需要先卸载llvm软件包(sudo apt-get purge llvm),以确保获得正确的版本。您始终可以使用以下命令检查要运行的文件which [command]。例如,which llvm-config应阅读/usr/local/bin/llvm-config。有关更多信息,请参见en.wikipedia.org/wiki/Which_%28Unix%29
andyg0808 2013年

为什么llvm-config不像gcc那样链接到llvm-config-3.2?这是一个有意识的选择吗?
Janus Troelsen 2014年

@JanusTroelsen我相信这是一个明智的选择。由于可从llvmUbuntu 12.04 的软件包中获得的LLVM版本是llvm-2.9,因此该llvm-config命令已链接到llvm-config相同版本的llvm-config-2.9。在Ubuntu 13.04和13.10中,该llvm软件包将安装LLVM 3.2,我希望它随后将其设置llvm-config-3.2llvm-config,在Ubuntu 13.10中也是如此。
andyg0808 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.