Linking ghc .o files with MSVC++
Axel Simon
A.Simon@ukc.ac.uk
Tue, 26 Nov 2002 20:00:00 +0000
On Tue, Nov 26, 2002 at 07:26:04PM +0100, Mauricio Carvalho wrote:
> module MyModule where
> foreign export ccall "fac" fac :: Int -> Int
> fac :: Int -> Int
> fac n
> | n <= 0 = 1
> | otherwise = n * fac(n-1)
> It gave me 4 files: MyModule_stub.h, MyModule_stub.c, MyModule_stub.o, MyModule.o (and a MyModule.hi, but I think not relevant for linking with C)
You can use ghc to link your C programs and if that is an option, you
strongly advised to do so. If you do it the hard way by calling the linker
directly you have to specify all runtime modules for Haskell programs as
well. For a quick hack, you can run ghc in verbose mode and see what it is
linking in. The more thorough method is to look at a file called
package.conf which includes details about what object files and what flags
are used to do the linking. The package rts is the one which is included
by default. Thus you would need to link the file HSrts and define all the
symbols mentioned in order to use the normal linker to link a mixed
Haskell C program.
Hope this helps,
Axel.