English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
I'm having trouble compiling independent executables
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-12-29 (16:47)
From: Igor Pechtchanski <pechtcha@c...>
Subject: Re: [Caml-list] I'm having trouble compiling independent executables
On Tue, 28 Dec 2004, Jeff Shaw wrote:

> Hi there, this is my first post. I'm a college student who learned OCaml last
> semester and likes it a lot. I'm a lingusitics student, so my programming
> knowledge is limited, but I enjoyed learning OCaml a LOT more than C++. For
> fun this winter break I wrote an RPN calculator, and I would like to compile
> it to run independently of any OCaml installation. I have both Visual Studio
> .NET 2003 and cygwin installed. I've googled for the errors I'm getting and I
> can't seem to find anything helpful.
> First of all, "ocamlc rpn.ml" always works. But it won't run on a machine that
> doesn't have ocaml installed. The two ways I've read of to make stand-alone
> executables are "ocamlc -custom" and "ocamlopt." I have gotten neither to work
> in all three ways of using OCaml in windows: MSVC, MinGW, and cygwin.
> [snip MSVC compile]
> On to cygwin... I've tried recompiling and installing ocaml from source, but
> that doesn't fix the problems.

Is there a reason why you don't use the official Cygwin "ocaml" package?
I had no problem running ocamlopt on Cygwin (in fact, the whole package
was built using ocamlopt).  FWIW, the Cygwin packages sources contain some
modifications to the build scripts that let them use Cygwin's binutils,
etc.  (BTW, which sources *did* you use?)

> ocamlc -custom rpn.ml
> "/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ld
> cannot find -lcamlrun
> collect2: ld returned 1 exit status
> Error while building custom runtime system"
> ocamlopt rpn.ml
> "cannot find file libasmrun.a"

Looks like a library path problem.  Try adding appropriate -L flags...

> I put the file on my PATH ( PATH=";/usr/local/lib/ocaml ) but that
> doesn't fix it. I add the file to the command line, but that doesn't fix
> it either.

> MinGW version of ocaml...
> ocamlc -custom rpn.ml does not have access to gcc, which is in cygwin
> only, so it doesn't work.

You need to modify it to use "gcc -mno-cygwin", which build MinGW
executables (yes, even under Cygwin -- install the gcc-mingw package).
There's also a MinGW-only version of gcc/binutils -- see

> ocamlopt rpn.ml
> "'as' is not recognized as an internal or external command, operable program or batch file.
> Assembler error, input left in file C:\DOCUME~1\jeff\LOCALS~1\Temp\camlasm4af23d.s"

Same as above -- you need MinGW binutils.

> BTW my source does not need any special modules; the program runs using
> only what's available in Pervasives.

I'd first try removing your self-built OCaml and installing the Cygwin
"ocaml" package.  It should also pull in all the necessary Cygwin packages
(e.g., gcc, binutils).  If there are still problems with your build after
that, please report it as a bug to the main Cygwin list (<cygwin at cygwin
dot com>).

> Any help would be appreciated!
> Jeff

Igor Pechtchanski, the Cygwin OCaml maintainer
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"The Sun will pass between the Earth and the Moon tonight for a total
Lunar eclipse..." -- WCBS Radio Newsbrief, Oct 27 2004, 12:01 pm EDT