在ubuntu上安装llvm和clang
所以我试图在我的Ubuntu 12.04(64位)上安装Halide 。 我需要安装llvm-3.2和clang。
运行sudo apt-get install llvm-3.2
以“找不到包”结束。
尝试sudo apt-get install llvm
或sudo 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:找不到命令。
好的,所以我通过安装llvm
, clang
和build-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 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)。
那么,删除你已经获得的软件包的步骤,并安装精确建议的版本:
- 使用
sudo apt-get purge llvm-3.2 clang-3.2
从系统中完全删除LLVM和clang。 - (可选)使用
sudo add-apt-repository --remove ppa:kxstudio-team/builds
从系统中删除PPA。 - 按照https://wiki.ubuntu.com/Testing/EnableProposed上的说明启用Proposed存档(位于页面顶部),并按照“从-proposed中选择性升级”的说明进行操作。 第一部分将启用
llvm-3.2
软件包的实际Ubuntu版本,第二部分将阻止系统尝试将所有内容升级到Proposed版本。 - 使用
sudo apt-get update
来获取有关现在可用的软件包和版本的信息。 - 使用
sudo apt-get install llvm-3.2/precise-proposed
安装LLVM 3.2,并使用sudo apt-get install clang/precise-proposed
安装Clang 3.0(我认为这是你应该得到的版本)。 - 新步骤:执行
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
)asllvm-config
。 更完整的是,这会在Ubuntu寻找程序的另一个地方创建符号链接 (或符号链接)到llvm-config-3.2(更多信息: ln , FHS , PATH )。 因此,当你运行“llvm-config”时,Ubuntu会找到符号链接并运行它指向的程序(llvm-config-3.2
)。 - 看看现在是否所有内容都正确编译。
希望这有效。 我没有测试任何这些,所以请自行承担使用风险等等。不过,我很确定它不应该做任何可怕的事情。
编辑:注意llvm
和llvm-3.2
是独立的。 llvm
依赖于llvm-2.9
( 见这里 ),而llvm-3.2
是独立的( 参见这里的依赖关系 )
另外,我不确定你是否了解标签的完成情况 ; 如果你正在寻找一个命令但却不太清楚它的名字会很有帮助(例如,在这种情况下,它可能会显示llvm-config
被称为llvm-config-3.2
)。