我正在关注在OSX Lion上运行的LLVM的Hello pass教程。我在lib/Transforms/Hello
目录中创建了make,创建了bitcode,然后在Hello目录中执行了此操作:
$ opt -load ../../../Debug/lib/LLVMHello.dylib -hello < hello.bc > /dev/null
opt: <stdin>: Unknown instruction
我试图搜索这个,但没有找到任何东西。有什么建议吗?
我不确定这是否重要,但我使用的是gcc 4.2.1。
由于
答案 0 :(得分:2)
这意味着您的llvm-gcc和LLVM不同步/不兼容。使用错误的LLVM,即使简单的lli
也会失败:
$ lli hello.bc
lli: hello.bc: Unknown instruction
您可以获取与编译器对应的LLVM,也可以使用基于LLVM的编译器。对于前者,您可以使用--version
获取标记,例如:
$ llvm-gcc-4.2 --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc.
build 5658) (LLVM build 2335.15.00)
表示您可以从
获取相应的LLVMhttp://llvm.org/svn/llvm-project/llvm/tags/Apple/llvmCore-2335.15
获得匹配的LLVM后,一切顺利:
$ Debug/bin/lli hello.bc
hello world
$ Debug/bin/opt -load Debug/lib/LLVMHello.dylib -hello <hello.bc >/dev/null
Hello: main