2012-03-09 17 views
4

在Windows 7中,64位(自安裝)已安裝OCaml中,我試圖創建Ocamlopt和失蹤crt2.o文件

ocamlopt HelloWorld.ml -o HelloWorld 

一個簡單的exe文件,按照要求我使用的本地代碼編譯(ocamlopt)與Visual C++(我安裝了Visual Studio 10)和Microsoft Assembler MASM版本8(MinGW也安裝);我還設置了OCaml(c:\ ProgramFiles \ Ocaml \ bin),MinGW(c:\ ProgramFiles \ MinGW \ bin)和MASM(C:\ masm32 \ bin)的路徑變量。然而,儘管我盡了最大努力和一番搜索,我不能繞錯誤消息

**Fatal error, Cannot find file "crt2.o" 
File "caml_startup", line 1, characters 0-1: 
Error: error during linking. 

獲得除非我放在HelloWorld.ml文件MinGW的,其中crt2.o文件所在的lib文件夾。我很欣賞答案可能很簡單,但我被卡住了。任何幫助將不勝感激。

+1

我記得有設置全局標誌的FlexLink公司('FLEXLINKFLAGS')得到一切已過正常。設置所有詳細級別,如'-cclib --verbose -ccopt -v'來查看正在運行的外部命令。很有幫助。 – nlucaroni 2012-03-09 16:35:22

回答

2

我猜的MinGW需要一些方法來找到庫文件 - 當它從源代碼編譯 - 路徑LIB二進制文件被硬編碼,如果沒有 - 它會以某種方式(環境變量)搜索。嘗試從可能提供正確環境的mingw(或msys)shell構建或手動設置LIB env變量。順便說一句,在調試mingw問題時,首先排除ocaml並嘗試構建簡單的C程序會更容易。

+0

我嘗試使用MinGW外殼,正如你所建議的,並且能夠使用標準命令來構建它 - 完全沒有鏈接問題。現在我們來看看在這裏提出的所有其他選項,看看我是否可以通過Windows外殼工作。非常感謝 – user1060986 2012-03-10 04:52:58

2

我種記得這是一個已知的bug:相反的是在文檔中說,你還需要安裝了Cygwin。

另一個問題可能是一個32/64位不兼容,即你的一些工具使用的是32個的目標,而其他的使用64個的目標。

1

能幫你上OCaml的安裝程序,您使用更精確(URL?)。您是否嘗試過this page上的安裝程序?它列出了幾個潛在的問題以及如何設置MinGW/MSYS進行本地編譯。

,我們清楚地瞭解你有問題,最終這是非常重要的,你發現了,這樣我們就可以告訴維護者如何更新相關文件的解決方案。

1

我寫了安裝程序。

所以才了結此事,詳細說明在http://protz.github.com/ocaml-installer/,實際上你有權利FLEXLINKFLAGS導出爲環境變量,因爲ocamlopt採用的FlexLink(該安裝程序包)。但是,flexlink本身在msys環境中無法正常工作。

安裝程序會鼓勵你的cygwin使用的下一個版本,在這裏一切都應該工作得很好。

乾杯,

喬納森