我正在尝试在远程unix服务器上安装和运行objective-caml。
我已经成功构建并安装了ocaml包中包含的所有文件。但是,在尝试使用它时,例如:
[~]# ocamllex
给出:
-bash: /home1/PATHTOMYHOME/local/bin/ocamllex: /usr/local/bin/ocamlrun: bad interpreter: No such file or directory
有没有办法让它看到ocamlrun
的其他地方?正确的目录位于$ PATH变量中(ocamlrun
正常工作)。
答案 0 :(得分:2)
在unix系统上,Ocaml字节码可执行文件以shebang行开头,该行提供字节码解释器(ocamlrun
)的路径。您的可执行文件似乎以#!/usr/local/bin/ocamlrun
开头。将其更改为/home1/PATHTOMYHOME/local/bin/ocamlrun
。
如果您想在ocamlrun
中查找$PATH
,请将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。这样,所有程序都会自动查找正确的目录。
答案 1 :(得分:1)
您可以将字节码文件的名称传递给ocamlrun
:
/correct/path/to/ocamlrun /home1/PATHTOMYHOME/local/bin/ocamllex
或者,它可能只是编辑字节码文件的第一行:有一个#!那里有一条硬编码的路。该文件的其余部分是字节码,但如果您的编辑器没有弄乱它,那么有可能......
作为第三种解决方案,请使用本机编译版本ocamllex.opt
:它不依赖于ocamlrun
。