On Wed, May 23, 2007 at 05:52:55PM -0700, William Ahern wrote:
> On Thu, May 24, 2007 at 10:45:40AM +1000, Sisyphus wrote:
> >
> > ----- Original Message -----
> > From: "Sean McMahon" <[EMAIL PROTECTED]>
> > To: <[email protected]>
> > Sent: Thursday, May 24, 2007 8:55 AM
> > Subject: Can Inline link to static libraries
> >
> >
> > >One of the reasons I started using Inline was because the xs code someone
> > >gave me couldn't link to static libraries. Can Inline::C get around this.
> > >Can Inline::Java get around this if I need to use Java?
> I've had issues, on OpenBSD in particular. Since Perl must dynamically load
> the module, what [static] libraries you build with/into your XS module need
> to have been compiled with the -fPIC flag (or whatever the local variant is,
> if one exists; on some systems its the default these days).
>
> If the static library wasn't built in such a way, then the OP might just be
> out of options.
Not quite. It should be possible to build any extension statically linked to
Perl. (Not using Inline. I suspect you can't do this with Inline, but you
can with regular XS extensions)
Assuming the Makefile is generated by Makefile.PL, then
make perl
should generate a new perl executable staticly linked to that extension
(and all existing staticly linked extensions)
But it seems that if you're using a vendor supplied perl that was built with
a shared libperl.so, then this isn't going to work*. You'll need to compile
your own perl. The default in the source tarball is not to have a shared
libperl.so; it just seems that most vendors choose to override this setting.
Nicholas Clark