linux - 安装 Clang/LLVM/Ubuntu

标签 linux gcc ubuntu clang

我被要求在我注册的编译器类(class)中使用 LLVM 和 Clang。这不是类(class)内容的问题,而是如何安装所需软件的问题。

我正在运行 gcc 版本 4.6.3 并且已经下载、构建、测试和更新了我认为是 LLVM 套件版本 3.4(最新的 svn 版本)。我做了一个简单的“hello world”应用程序,正如 LLVM 入门页面上所引用的那样,但是在线

lli helloworld.bc

我收到错误“lli:helloworld.bc:无效的 MODULE_CODE_GLOBALVAR 记录”

以下是我在终端中运行的指令,其中大部分直接取自 LLVM 网站:

cd myFolder
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd myFolder
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd myFolder
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd myFolder
mkdir build
cd build
../llvm/configure --enable-optimized CC=/usr/bin/clang CXX=/usr/bin/clang++
make
make check-all
make update

然后

clang hello.c -o hello
clang -03 -emit-llvm hello.c -c -o hello.bc
lli hello.bc

最后一行 lli hello.bc 是我得到上述错误的地方。

这是我的问题:

  1. 我的机器上安装了什么?如何解决此错误?

  2. 我的教授说我们需要 clang 和 LLVM 3.3。我怎样才能获得 LLVM 3.3?

最佳答案

当您输入时:

clang -03 -emit-llvm hello.c -c -o hello.bc

您使用了系统的clang可执行文件,它位于/usr/bin/clang,而不是您刚刚构建的clang .两者有不同的版本。然而,lli 是您刚刚构建的 lli - Ubuntu 没有附带它。这意味着您使用较旧的 LLVM 版本生成了一个 .bc 文件,然后尝试使用较新的 LLVM 版本运行它,因此出现了问题。

要验证这一点,您可以通过在控制台中键入 which clang 来检查您使用的是哪个 clang

解决此问题的最简单方法是键入 ./clang(或任何其他不只是文件名的路径)而不是 clang,这会强制shell 选择当前目录下的文件。

关于linux - 安装 Clang/LLVM/Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18479543/

相关文章:

c# - 在 Linux 中使用 Windows 窗体编译 C# 代码

python - 在 ubuntu 中安装 python 3.4 的 numpy

android - NetBeans 无法连接到 Android 模拟器 AVD

c - Linux C++ : test of the cacheline size performance effect not as expected

linux - 如何从 struct page 获取 struct vm_area_struct

linux - 如何在 Fedora 上解压和重建 rpm 包?

c++ - 如何使用 gcc 和 intel 静态库进行编译?

c - 显式忽略来自 -Wcast-qual : cast discards ‘__attribute__((const))’ qualifier from pointer target type 的警告

c++ - GCC 4.6.3 - 模板特化受优化级别影响?

Docker 服务启动失败