如何在Mac OS X 10.9中编写llvm pass

时间:2014-02-22 11:21:16

标签: macos llvm

我在Linux上建立了传递,它在那里正常工作。现在,当我在Mac Airbook上将我的代码引入Mac OS X 10.9时,它已经不再适用了。我在下面描述了我为构建llvm传递所采取的步骤。

我的源代码树是llvm-3.4和llv-3.4 / tools / clang-3.4

我跑了./configure --prefix=/some-path --enable-targets=host这是成功的。

然后我运行make && make install,完成没有任何错误。

我导出了bin路径export PATH=/some-path/bin:$path并检查了which clang which opt,他们指出了我的安装。

现在当我尝试加载hello pass opt -load /some-path/lib/LLVMHello.dylib -hello <fac.bc >/dev/null时,我收到以下错误

Error opening '/some-path/lib/LLVMHello.dylib': dlopen(/some-path/lib/LLVMHello.dylib, 9): Symbol not found: __ZN4llvm12FunctionPass17assignPassManagerERNS_7PMStackENS_15PassManagerTypeE Referenced from: /some-path/lib/LLVMHello.dylib Expected in: flat namespace in /some-path/lib/LLVMHello.dylib -load request ignored. opt: Unknown command line argument '-hello'. Try: '/some-path/bin/opt -help' opt: Did you mean '-help'?

有人可以帮我解决这个问题,或者至少指出正确的方向。

1 个答案:

答案 0 :(得分:1)

在我的例子中,动态加载的传递所需的动态LLVM库丢失了。我通过使用--enable-shared配置LLVM解决了这个问题。我也设置了--enable-keep-symbols,但我不认为这是必要的。我使用的完整配置命令:

./configure --enable-shared --enable-keep-symbols

我知道答案有点晚了,但我最近遇到了同样的问题。由于我花了很长时间解决这个问题,我想传递我的发现。希望它有所帮助。

干杯,马库斯