
On Tue, Mar 8, 2011 at 08:23, Max Bolingbroke
On 8 March 2011 05:28, Jason Dusek
wrote: gcc -g -Wall -O2 -fPIC -Wall -o import \ -I/usr/lib/ghc-6.12.1/include/ \ import.c exports.so
In my experience, the easiest way to do this is to use gcc to build object files from C source files, and then specify those object files on the ghc command line in order to get GHC to do the linking step. This will deal with linking in the correct RTS and, if you specify appropriate -package flags, dependent packages as well.
If you want a C main function then see user guide section 8.2.1.1 at http://www.haskell.org/ghc/docs/latest/html/users_guide/ffi-ghc.html.
Following your advice, I was able to get a working main, linking the .o's (no attempt at an SO this time) with GHC. However, what I was hoping to do was build an SO and that could be linked without GHC, for example via Postgres's "LANGUAGE C" functionality (load SOs and run them) or Ruby's DL/Import (same idea for Ruby). Requiring GHC for linking would really frustrate that goal :) Is there a tutorial I should be following? Well-Typed's blog post on this in the early days of shared object support seemed to be doing what I was doing. -- Jason Dusek Linux User #510144 | http://counter.li.org/