我在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'?
有人可以帮我解决这个问题,或者至少指出正确的方向。
答案 0 :(得分:1)
在我的例子中,动态加载的传递所需的动态LLVM库丢失了。我通过使用--enable-shared配置LLVM解决了这个问题。我也设置了--enable-keep-symbols,但我不认为这是必要的。我使用的完整配置命令:
./configure --enable-shared --enable-keep-symbols
我知道答案有点晚了,但我最近遇到了同样的问题。由于我花了很长时间解决这个问题,我想传递我的发现。希望它有所帮助。
干杯,马库斯