Ocamlopt并丢失了crt2.o文件

时间:2012-03-09 08:35:16

标签: ocaml ocamlbuild

在Windows 7,64位(自安装程序)上安装了OCaml后,我尝试使用

创建一个简单的exe文件
ocamlopt HelloWorld.ml -o HelloWorld

根据需要,我使用了本机代码编译器(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的lib文件夹中,crt2.o文件位于该文件夹中。我很欣赏答案可能很简单,但我被困住了。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

我想mingw需要一些方法来查找库文件 - 当它从源代码编译时 - lib的路径在二进制文件中是硬编码的,如果不是 - 它将以某种方式搜索(环境变量)。尝试从可能提供正确环境的mingw(或msys)shell构建或手动设置LIB env变量。 BTW在调试mingw问题时,首先排除ocaml会更容易,并首先尝试构建简单的C程序。

答案 1 :(得分:2)

我记得这是一个已知的错误:与文档中说的相反,你还需要安装Cygwin。

另一个问题可能是32/64位不兼容,即你的一些工具使用32位目标,而其他工具使用64位目标。

答案 2 :(得分:1)

您可以更准确地了解您使用的OCaml安装程序(URL?)。您是否尝试过this page上的安装程序?它列出了几个潜在的问题以及如何设置MinGW / MSYS进行本机编译。

我们必须清楚地了解您所遇到的问题,并最终了解您找到的解决方案,这样我们才能告诉维护人员如何更新相关文档。

答案 3 :(得分:1)

我写了安装程序。

所以只是为了解决这个问题,详细说明在http://protz.github.com/ocaml-installer/,实际上你必须将正确的FLEXLINKFLAGS导出为环境变量,因为ocamlopt使用flexlink(安装程序包)。但是,flexlink本身在msys环境中不能立即使用。

安装程序的下一个版本将鼓励您使用cygwin,其中一切都应该完美无缺。

干杯,

乔纳森