所以我正在尝试安装卤化物在我的 Ubuntu 12.04 (64位)上。我需要安装 llvm-3.2 和 clang。
运行sudo apt-get install llvm-3.2
最终以“未找到包”结束。
尝试sudo apt-get install llvm
或sudo 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 not found 错误。
答案1
llvm
好的,我通过安装、clang
和成功在 Ubuntu 13.04 上编译了 Halide build-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)。
因此,删除您已有的软件包并安装精确建议的版本的步骤如下:
- 用于
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 选择性升级”的说明进行操作。第一部分将启用软件包的实际 Ubuntu 版本
llvm-3.2
,第二部分将阻止系统尝试将所有内容升级到建议的版本。 - 用于
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-3.2
)视为llvm-config
。更完整地说,这将创建一个符号链接(或符号链接)到 Ubuntu 将寻找程序的另一个地方的 llvm-config-3.2(更多信息:在,跳频,小路)。因此,当你运行“llvm-config”时,Ubuntu 将找到符号链接并运行它指向的程序(llvm-config-3.2
)。 - 看看现在一切是否编译正确。
希望这有用。我还没有测试过这些,所以请自行承担风险等。不过,我很确定它不会造成任何可怕的后果。
编辑:请注意llvm
和llvm-3.2
是独立的。llvm
取决于llvm-2.9
(看这里),而llvm-3.2
是分开的(在此处查看依赖项)
另外,我不确定你是否知道Tab 补全;如果您正在寻找一个命令但不太清楚其名称,它会很有帮助(例如,在这种情况下,它可能会显示被llvm-config
称为llvm-config-3.2
)。