[Paraview] static linking with python
Brad King
brad.king at kitware.com
Fri Mar 4 08:53:13 EST 2011
On 03/03/2011 04:08 PM, Burlen Loring wrote:
> On 03/03/2011 05:39 AM, Brad King wrote:
>> On 03/02/2011 06:31 PM, Burlen Loring wrote:
>>> Can anyone help figure out where these comes from and how to turn them off?
>> http://www.cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:LINK_SEARCH_END_STATIC
>
> Thanks for the reply, I have been playing with this unsuccessfully. It
> doesn't have the desired effect so I think I'm doing something wrong.
The documentation at that link gives the explanation of why Bdynamic
appears:
"Make uses these options to set the link type for libraries whose full
paths are not known or (in some cases) are in implicit link directories
for the platform. By default the linker search type is left at -Bdynamic
by the end of the library list."
IOW any library of the form "-lfoo" is assumed to be -Bdynamic. Libraries
in implicit link directories like "/usr/lib/libbar.a" will get turned into
"-Bstatic -lbar" but then a later "-lfoo" will become "-Bdynamic -lfoo"
since "-lfoo" is assumed to be dynamic. This is all because CMake assumes
dynamic linking is preferred.
The solution as of CMake 2.8.4 is to ensure that all libraries are given
to target_link_libraries as full paths to the .a files so that CMake knows
they are static. There is a TODO comment in the link computation code to
support static linking:
http://cmake.org/gitweb?p=cmake.git;a=blob;f=Source/cmComputeLinkInformation.cxx;hb=v2.8.4#l820
I had been hoping to put in real support for a "LINK_STATIC" property that
would work with all the generators in order to resolve that TODO comment.
That is a lot of work though so it hasn't been done.
I just added a minimal feature to CMake's development version to address
the problem in this case:
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5abfb571
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=077954d4
Now you can set a "LINK_SEARCH_START_STATIC" property to switch the dynamic
linking assumption to static linking. In combination with "-static" that
should produce a link line with no -Bdynamic options that links statically.
This new feature should be available in the nightly builds by tomorrow:
http://www.cmake.org/files/dev/?C=M;O=D
-Brad
More information about the ParaView
mailing list