amd64 and -fPIC

Roman Neuhauser neuhauser at
Tue Mar 7 22:35:27 UTC 2006

# marcel at / 2006-03-07 12:54:55 -0800:
> A shared object has to be position independent and any object files
> that constitute the shared object have to be constructed in such a
> way. For C/C++ and GCC this means that -fPIC is required. Some
> platforms (i.e. i386) don't generate different code for -fPIC, so the
> omission of -fPIC when it is necessary doesn't result in problems.
> This is just a quirk of the platform, not the norm. Also, linking an
> archive library into a shared object is perfectly valid, provided of
> course that all object files in the archive library are compiled for
> inclusion in a shared object. This of course means that they must be
> position independent and thus compiled with -fPIC (or equivalent). As
> such, you must determine up front for what purpose you create an
> archive library (linking into an executable or linking into a shared
> object) or create 2 variants: one non-PIC and one PIC.
> A generic port that only builds archive libraries better be PIC to
> cover all bases. Performance cannot really be a concern when you're
> working with generic parts. If performance is a concern, customization
> is pretty much a given and the use of generic parts is almost always
> abandoned.

    That's pretty much what I've been trying to say, except this version
    is much better.

How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.   

More information about the freebsd-ports mailing list