2012-08-09 72 views
1

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

的文件上写着:

为了测试它,遵循例如在入门指南 的末尾编译LLVM的“Hello World”。现在,我们可以通过我们的转型这样运行了该程序的位码文件 (hello.bc)(或 当然,任何位码文件将工作):

$选择-load ../../../ Debug + Asserts/lib/Hello.so -hello < hello.bc> /dev/null你好:__main你好:puts你好:main'-load'选项 指定'opt'应该加载你的pass作为共享对象,其中 使'-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,我怀疑这是问题的一部分...

回答

1

原来,我想要的命令(从bin目录下)是:

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

,我明白了名为.dylib是.so的OSX等价物 - 但这主要是猜测...

0

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