代码之家  ›  专栏  ›  技术社区  ›  Jay

OCaml安装,找不到二进制文件

  •  4
  • Jay  · 技术社区  · 15 年前

    我试图在远程unix服务器上安装并运行objective caml。

    我已经成功地构建并安装了ocaml包中包含的所有文件。但是,当尝试使用它时,例如:

    [~]# ocamllex
    

    给予:

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

    有没有办法告诉它去别的地方找 ocamlrun ? $PATH变量中有正确的目录( 奥坎姆伦 工作)。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Pascal Cuoq    15 年前

    您可以将字节码文件的名称传递给 ocamlrun :

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

    或者,也可以只编辑字节码文件的第一行:有一个#!还有一条硬编码的路。不过,文件的其余部分是字节码,但如果编辑器不处理它,则有可能。。。

    作为第三种解决方案,使用本机编译版本 ocamllex.opt :它不依赖于 奥坎姆伦 .

        2
  •  2
  •   Gilles 'SO- stop being evil'    15 年前

    在unix系统上,Ocaml字节码可执行文件以 shebang 提供字节码解释器路径的行( ocamlrun ). 看来你的可执行文件是从 #!/usr/local/bin/ocamlrun . 把这个改成 /home1/PATHTOMYHOME/local/bin/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 . 这样所有程序将自动在正确的目录中查找。