7

我注册的编译器类要求我使用 LLVM 和 Clang。这不是关于课程内容的问题,而是关于如何安装所需软件的问题。

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

lli helloworld.bc

我收到错误“lli:helloworld.bc: Invalid 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?

4

1 回答 1

8

当您输入:

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

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

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

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

于 2013-08-28T14:15:36.840 回答