[Haskell-cafe] Re: external linking traumas

Plareplane plareplane at gmail.com
Tue Oct 21 03:36:15 EDT 2008

Chris Dornan <chris <at> chrisdornan.com> writes:

> If I try the same with ghc:
> 	ghc test.hs  -package hsql-1.7 -package hsql-mysql-1.7 -L.
> -llibmysql
> with libmysql.lib copied into the same directory I get:
> 	C:\Program Files\Haskell\hsql-mysql-1.7\ghc-6.8.3/libHShsql-mysql-
> 1.7.a(MySQL.o)(.text+0x748):fake: undefined reference to `mysql_init <at> 4'
> 	C:\Program Files\Haskell\hsql-mysql-1.7\ghc-6.8.3/libHShsql-mysql-
> 1.7.a(MySQL.o)(.text+0x83f):fake: undefined reference to
> `mysql_real_connect <at> 32'
> 	[...]
> 	C:\Program Files\Haskell\hsql-mysql-1.7\ghc-6.8.3/libHShsql-mysql-
> 1.7.a(MySQL.o)(.text+0x216c):fake: undefined reference to
> `mysql_stmt_affected_rows <at> 4'
> 	collect2: ld returned 1 exit status

I have a possibly distantly related problem, a clunky solution, and would
like to know if there's better advice.  I tried to compile a statically linked
binary of a program involving the X11 package:

$ ghc --make tile.hs -optl-static -optl-pthread

This gives undefined references because ghc tacks on -lX11, but not -lxcb,
-lxcb-xlib, etc.

$ ghc --make tile.hs -optl-static -optl-pthread -lXcb -lxcb-xlib ...

This gives undefined references because (I think) the resulting link arguments
aren't in the right order. So, I ended up doing

$ ghc --make tile.hs -optl-static -optl-pthread -v

Then taking the output and tacking on -lxcb, -lxcb-xlib, etc. in the right
position, running it, and then it worked.  So, perhaps you might want to look at
the output with -v and seeing if everything looks the way it should.

More information about the Haskell-Cafe mailing list