4

在 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 文件放在 Crt2.o 文件所在的 MinGW 的 lib 文件夹中。我很欣赏答案可能很简单,但我被困住了。任何帮助将不胜感激。

4

4 回答 4

2

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

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

于 2012-03-09T10:23:49.723 回答
2

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

于 2012-03-09T09:35:57.713 回答
1

我写了安装程序。

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

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

干杯,

乔纳森

于 2012-04-03T20:35:41.340 回答
1

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

我们清楚地了解您遇到的问题以及最终找到的解决方案非常重要,这样我们才能告诉维护人员如何更新相关文档。

于 2012-03-10T06:39:38.880 回答