[Distutils] static linking in distutils/setuptools?

Robert Kern robert.kern at gmail.com
Thu Jan 26 23:12:29 CET 2006


Matthias Urlichs wrote:
> Hi,
> 
> Robert Kern:
> 
>>Not really, no. In many cases (e.g., GNU ld), there's simply no way to
>>tell the linker that you prefer static libraries to shared libraries
>>when you are building a shared library like a Python extension. You
>>simply have to make sure that the static libraries are found first.
> 
> Note: Linking static code (gcc without -fpic => foo.o => libfoo.a) into
> a shared library (lib*.so) is a bad idea. On i386, the required
> relocation means that the static library's text is not shared between
> concurrent invocations, and loading the library is more expensive too.
> On some other architectures, either linking the library, or loading it,
> will simply fail.
> 
> You need to build an archive of shared objects (same as above, but use
> -fpic or equivalent). These are usually named lib*_pic.a IIRC.

On OS X (the platform Chris is building for), -fPIC is the default for
everything, so the operation is fairly safe, if not optimal.

-- 
Robert Kern
robert.kern at gmail.com

"In the fields of hell where the grass grows high
 Are the graves of dreams allowed to die."
  -- Richard Harter



More information about the Distutils-SIG mailing list