[Haskell-cafe] [Haskell] Linker flags for foreign export.
Jason Dusek
jason.dusek at gmail.com
Wed Mar 9 22:07:25 CET 2011
On Tue, Mar 8, 2011 at 08:23, Max Bolingbroke
<batterseapower at hotmail.com> wrote:
> On 8 March 2011 05:28, Jason Dusek <jason.dusek at gmail.com> 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/
More information about the Haskell-Cafe
mailing list