OSX上的LLVM命令行

时间:2012-08-09 19:35:31

标签: macos llvm

我正在努力[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,我怀疑这是问题的一部分......

2 个答案:

答案 0 :(得分:1)

事实证明我想要的命令(来自bin目录)是:

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

并且我理解.dylib是.so的OSX等价物 - 但这主要是猜测......

答案 1 :(得分:0)

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