我正在努力[http://llvm.org/docs/WritingAnLLVMPass.html] [1],尝试写一个非常简单的传球。我已经编写了传递并编译了它(部分归功于Stackoverflow社区),但现在我无法运行它...
文档内容如下:
要测试它,请按照“入门指南”末尾的示例进行操作 将“Hello World”编译为LLVM。我们现在可以运行bitcode文件了 (hello.bc)通过我们这样的转换(或者 当然,任何bitcode文件都可以工作):
$ opt -load ../../../Debug+Asserts/lib/Hello.so -hello< hello.bc> / dev / null Hello:__ main Hello:puts Hello:main'-load'选项 指定'opt'应该将您的传递作为共享对象加载,其中 使'-hello'成为一个有效的命令行参数(这是你的一个原因 需要注册你的通行证)。因为hello pass不会修改 程序以任何有趣的方式,我们只是扔掉了结果 opt(将其发送到/ dev / null)。
然而,当我运行命令时,我遇到以下问题:
mymachine$./opt -load ../../../Debug+Asserts/lib/Hello.so -hello < hello.bc > /dev/null
Error opening '../../../Debug+Asserts/lib/Hello.so':
dlopen(../../../Debug+Asserts/lib/Hello.so, 9): image not found
-load request ignored. opt: Unknown command line argument '-hello'.
Try: './opt -help' opt: Did you mean '-help'?
有什么想法吗?我正在运行OSX,我怀疑这是问题的一部分......
答案 0 :(得分:1)
事实证明我想要的命令(来自bin目录)是:
opt -load ../lib/LLVMHello.dylib -hello < hello.bc > /dev/null
并且我理解.dylib是.so的OSX等价物 - 但这主要是猜测......
答案 1 :(得分:0)
尝试使用绝对路径而不是相对路径?这似乎是一个相对明显的“未找到文件”。