2010-11-12 48 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