2010-11-12 109 views
3

我试图在远程unix服务器上安装并运行objective-cam。OCaml安装,找不到二进制文件

我已成功构建并安装了包含在ocaml包中的所有文件。然而,当试图使用它,例如:

[~]# ocamllex 

给出:

-bash: /home1/PATHTOMYHOME/local/bin/ocamllex: /usr/local/bin/ocamlrun: bad interpreter: No such file or directory 

有什么办法来告诉它来寻找别的地方ocamlrun?正确的目录位于$ PATH变量中(ocamlrun工程)。

回答

1

您可以通过字节码文件的名称ocamlrun

/correct/path/to/ocamlrun /home1/PATHTOMYHOME/local/bin/ocamllex 

或者,它可能只是工作,编辑字节码文件的第一行:有一个#!和一个硬编码的路径。该文件的其余部分是字节码,虽然,但如果你的编辑器不惹它,有机会的话......

作为第三个解决方案,使用本机编译版本ocamllex.opt:它不依赖于ocamlrun

1

在unix系统上,Ocaml字节码可执行文件以shebang行开头,该行提供字节码解释器的路径(ocamlrun)。看起来您的可执行文件以#!/usr/local/bin/ocamlrun开头。将其更改为/home1/PATHTOMYHOME/local/bin/ocamlrun

如果您想在$PATH中查找ocamlrun,请将shebang行更改为#!/usr/bin/env ocamlrun

这里有一种方法来更改当前目录中字节码可执行文件的路径,使其他文件完好无损。一旦检查完替换作品,请删除*.orig文件。

perl -i.orig -pe 's~^#!.*/ocamlrun.*~#!/usr/bin/env ocamlrun~ if $.==1; close ARGV if eof' * 

我建议你用./configure -prefix /home1/PATHTOMYHOME/local编译OCaml。这样所有程序都会自动查找正确的目录。

+0

将此行更改为任何值会在尝试运行ocamllex时导致'segmetation fault'。 – Jay 2010-11-12 23:03:36

+0

@James:这可能是因为你的编辑改变了第一行以外的东西(它可能改变了编码,或者删除了一些控制字符,或类似的东西)。确保你使用了二进制编辑器,或者在我的修改后的答案中使用perl命令。 – Gilles 2010-11-12 23:18:57

相关问题