我被要求在我注册的编译器类(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 是我得到上述错误的地方。
这是我的问题:
我的机器上安装了什么?如何解决此错误?
我的教授说我们需要 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/