amd64 and -fPIC

Kris Kennaway kris at obsecurity.org
Tue Mar 7 18:42:11 UTC 2006


On Tue, Mar 07, 2006 at 07:37:56PM +0100, Roman Neuhauser wrote:
> # kris at obsecurity.org / 2006-02-19 23:38:13 -0500:
> > On Mon, Feb 20, 2006 at 05:18:15AM +0100, pfgshield-freebsd at yahoo.com wrote:
> > > Hi;
> > > 
> > > amd64 has a rather nasty issue: in order to mix shared and static libraries
> > > everything has to be built with -fPIC. Most ports are either static or dynamic
> > > so it's usually not a problem, but I'm stating to find problems in the math
> > > section: packages like arpack and glpk are only built static and without -fPIC.
> > > And lately we are only building the dynamic version of ATLAS so packages that
> > > use many math libraries will have problems on amd64.
> > > 
> > > Someone would say the easy way out of this would be to add -fPIC to everything
> > > by default, which works, but has some performance issues. If someone has a
> > > better solution I would like to hear it (please!) but if not I would like to
> > > suggest instead a general guideline:
> > > 
> > > If the package includes a library that might be used frequently and doesn't
> > > include a shared version please add -fPIC to the amd64 version of the port, for
> > > example for math/arpack (and feel free to commit this):
> > 
> > The best solution is to make the port also build a shared version;
> > it's usually not that difficult to modify the makefile.  That way you
> > don't have to add nasty hacks.
> 
>     That doesn't solve the problem, which is: the static library is
>     almost useless, and users might actually want or need to use the
>     static library.

Why do you say it's useless?  The point of a static library is for
static linking, and this works fine on amd64 or any other
architecture.

>     net/libpcap only installs lib/libpcap.so if you install into /usr,
>     probably because all the dependent ports would need to be taught
>     to look in /usr/local/lib first.

I don't know what you're saying here.

>     misc/ossp-uuid's ${PREFIX}/lib/libuuid.a (it configures with
>     --disable-shared) cannot be used in shared libraries on amd64
>     because the port doesn't use -fPIC on this platform.

The bug is presumably the --disable-shared.

>     Ports that install static libraries *need* to use -fPIC on amd64.

No, they need to also install shared libraries.

Kris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20060307/d110746c/attachment.bin


More information about the freebsd-ports mailing list