在ubuntu上安装llvm和clang

所以我试图在我的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版本。 谷歌帮助了我

 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:找不到命令。

好的,所以我通过安装llvmclangbuild-essential在Ubuntu 13.04上成功编译了Halide。 我对您的问题的唯一猜测是,您安装的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 clangsudo 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存档(位于页面顶部),并按照“从-proposed中选择性升级”的说明进行操作。 第一部分将启用llvm-3.2软件包的实际Ubuntu版本,第二部分将阻止系统尝试将所有内容升级到Proposed版本。
  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安装Clang 3.0(我认为这是你应该得到的版本)。
  6. 新步骤:执行sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-config以使系统处理llvm-config-3.2 (这是与llvm-config一起提供的llvm-config llvm-3.2 )as llvm-config 。 更完整的是,这会在Ubuntu寻找程序的另一个地方创建符号链接 (或符号链接)到llvm-config-3.2(更多信息: ln , FHS , PATH )。 因此,当你运行“llvm-config”时,Ubuntu会找到符号链接并运行它指向的程序( llvm-config-3.2 )。
  7. 看看现在是否所有内容都正确编译。

希望这有效。 我没有测试任何这些,所以请自行承担使用风险等等。不过,我很确定它不应该做任何可怕的事情。

编辑:注意llvmllvm-3.2是独立的。 llvm依赖于llvm-2.9 ( 见这里 ),而llvm-3.2是独立的( 参见这里的依赖关系 )

另外,我不确定你是否了解标签的完成情况 ; 如果你正在寻找一个命令但却不太清楚它的名字会很有帮助(例如,在这种情况下,它可能会显示llvm-config被称为llvm-config-3.2 )。

Interesting Posts