Ubuntu 上 llvm 和 clang 的安装

Ubuntu 上 llvm 和 clang 的安装

所以我正在尝试安装卤化物在我的 Ubuntu 12.04 (64位)上。我需要安装 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 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 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 选择性升级”的说明进行操作。第一部分将启用软件包的实际 Ubuntu 版本llvm-3.2,第二部分将阻止系统尝试将所有内容升级到建议的版本。
  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-3.2)视为llvm-config。更完整地说,这将创建一个符号链接(或符号链接)到 Ubuntu 将寻找程序的另一个地方的 llvm-config-3.2(更多信息:跳频小路)。因此,当你运行“llvm-config”时,Ubuntu 将找到符号链接并运行它指向的程序(llvm-config-3.2)。
  7. 看看现在一切是否编译正确。

希望这有用。我还没有测试过这些,所以请自行承担风险等。不过,我很确定它不会造成任何可怕的后果。

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

另外,我不确定你是否知道Tab 补全;如果您正在寻找一个命令但不太清楚其名称,它会很有帮助(例如,在这种情况下,它可能会显示被llvm-config称为llvm-config-3.2)。

相关内容