1

我正在工作 [http://llvm.org/docs/WritingAnLLVMPass.html][1],试图写一个非常简单的通行证。我已经编写并编译了通行证(部分感谢 Stackoverflow 社区),但现在我无法运行它......

文档内容如下:

要对其进行测试,请按照入门指南末尾的示例将“Hello World”编译为 LLVM。我们现在可以通过这样的转换运行程序的位码文件(hello.bc)(当然,任何位码文件都可以):

$ 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,我怀疑这是问题的一部分......

4

2 回答 2

1

原来我想要的命令(来自 bin 目录)是:

opt  -load ../lib/LLVMHello.dylib -hello < hello.bc > /dev/null

我知道 .dylib 是 .so 的 OSX 等价物 - 但这在很大程度上是猜测......

于 2012-08-09T19:36:57.813 回答
0

尝试使用绝对路径而不是相对路径?这似乎是一个相对明显的“找不到文件”。

于 2012-08-09T19:38:00.720 回答