Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
win32-ocamlopt 3.10
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-10-25 (09:01)
From: Correnson_Loïc <Loic.Correnson@t...>
Subject: win32-ocamlopt 3.10
I was using win32-msvc-ocamlopt-3.06 for *many* years without any
problem. I'm trying to upgrade to 3.10 with VC++ 2005 Express, but still
have problems on linking phase.


> $ ocamlopt -verbose -o fact.exe
> + ml /nologo /coff /Cp /c /Fo"fact.obj" "C:\tmp\camlasm66fdf0.asm">NUL
> + ml /nologo /coff /Cp /c /Fo"C:\tmp\camlstartup8f1c00.obj" "C:\tmp\camlstartupfba8a6.asm">NUL
> + cl /nologo -D_CRT_SECURE_NO_DEPRECATE /MT /Fe"fact.exe" -I"D:\ocaml-3.10\lib" "C:\tmp\camlstartup8f1c00.obj" "D:\ocaml
> -3.10\lib\std_exit.obj" "fact.obj" "D:\ocaml-3.10\lib\stdlib.lib"  "D:\ocaml-3.10\lib\libasmrun.lib" advapi32.lib  /link
>  /subsystem:console
> Error during linking

Installed required packages (on Windows 2000 Pro):
 * VC++ 2005 Express
 * Platform SDK SP1
 * MASM (found v8.00)

Already corrected or checked correct:
 * clash in $PATH between cygwin/bin/link and VC/bin/link
 * $PATH and $LIB includes references to VC++ and SDK paths

> $ ls *.obj c:/tmp/*.obj c:/tmp/*.asm
> ls: c:/tmp/*.obj: No such file or directory
> c:/tmp/camlstartupfba8a6.asm  fact.obj

It seems that actually ml fails on creating the temporary .obj file.
However, when I reply by hand the associated cl step:

> $ ml /nologo /coff /Cp /c /Fo"C:\tmp\camlstartup8f1c00.obj" "C:\tmp\camlstartupfba8a6.asm"
>  Assembling: C:\tmp\camlstartupfba8a6.asm

The .obj file is now assembled !

> $ ls *.obj c:/tmp/*.obj c:/tmp/*.asm
> c:/tmp/camlstartup8f1c00.obj  c:/tmp/camlstartupfba8a6.asm  fact.obj

However, when trying to link again by hand:
> $ cl /nologo -D_CRT_SECURE_NO_DEPRECATE /MT /Fe"fact.exe" -I"D:\ocaml-3.10\lib" "C:\tmp\camlstartup8f1c00.obj" "D:\ocam
> l-3.10\lib\std_exit.obj" "fact.obj" "D:\ocaml-3.10\lib\stdlib.lib"  "D:\ocaml-3.10\lib\libasmrun.lib" advapi32.lib  /li
> nk  /subsystem:console

No output on std, but it seems to have failed again...
> $ echo $? ; ls fact.*
> 128
> fact.cmi  fact.cmx  fact.obj

Unfortunately, link /HELP and cl /HELP does not output anything
(unlike ml!)
Does anyone known how to debug linking phase on VC++ ?
Does anyone succeed in using ocamlopt-msvc-3.10 ?