[CMake] statically linked executables

Bill Hoffman bill.hoffman at kitware.com
Wed Nov 28 22:08:43 EST 2007


Daniel Rueckert wrote:
> Alan W. Irwin wrote:
>> On 2007-11-28 21:57-0000 Daniel Rueckert wrote:
>>
>>> Bill Hoffman wrote:
>>>> Daniel Rueckert wrote:
>>>>> Hi,
>>>>>
>>>>> I am trying to build some statically linked executables on a linux
>>>>> box. I have added the "-static" option to the linker flags and 
>>>>> specified
>>>>> static link libraries but for some reason cmake still adds the option
>>>>> "-Wl,-Bdynamic" flag to the linker options. Is there any way around 
>>>>> this?
>>>>>
>>>>> Thanks, Daniel
>>>>
>>>> Sounds like you might have some explicit shared libraries linked 
>>>> into you project with full paths.
>>>>
>>>> -Bill
>>>>
>>>
>>> Not explicitly. The shared libraries are -lSM, -lICE (part of X11 I 
>>> believe)
>>> and -lm. I have not found any way how to change them into static 
>>> libraries
>>> in cmake. I have attached the linking command generated by cmake:
>>>
>>> /usr/bin/c++    -fno-const-strings -ffloat-store -Wall -O2  -fPIC 
>>> -static "CMakeFiles/binarize.dir/binarize.o"   -o ../bin/binarize 
>>> -rdynamic -L/vol/vipdata/project/linux-ubuntu-static/lib 
>>> -L/vol/vipdata/packages/Mesa-6.5/lib -Wl,-Bstatic -lz -lfltk_images 
>>> -lfltk -lfltk_gl -lfltk_forms -Wl,-Bdynamic -lSM -lICE -Wl,-Bstatic 
>>> -lX11 -lXext -Wl,-Bdynamic -lm -Wl,-Bstatic -lglut -lXmu -lXi -lGLU 
>>> -lGL -Wl,-Bdynamic -lSM -lICE -Wl,-Bstatic -lX11 -lXext -lznz 
>>> -lniftiio -lsegmentation++ -lregistration++ -ltransformation++ 
>>> -lcontrib++ -limage++ -lgeometry++ -lcommon++ -lrecipes -lcontrib++ 
>>> -limage++ -lgeometry++ -lcommon++ -lrecipes -ltransformation++ 
>>> -lregistration++ -lsegmentation++ -lniftiio -lznz -lz -lfltk_images 
>>> -lfltk -lfltk_gl -lfltk_forms -Wl,-Bdynamic -lSM -lICE -Wl,-Bstatic 
>>> -lX11 -lXext -Wl,-Bdynamic -lm -Wl,-Bstatic -lglut -lXmu -lXi -lGLU 
>>> -lGL -Wl,-Bdynamic -lSM -lICE -Wl,-Bstatic -lX11 -lXext -Wl,-Bdynamic 
>>> -Wl,-rpath,/vol/vipdata/project/linux-ubuntu-static/lib:/vol/vipdata/packages/Mesa-6.5/lib 
>>>
>>>
>>> I would be grateful for any suggestions.
>>
>> Are you sure you have static versions of all your external libraries
>> (including libSM, libICE and libm) installed?  Sometimes, the static
>> versions of libraries come in separate developmental packages than the
>> shared versions for Linux so there may be some additional installation 
>> you
>> have to do to get the static versions.
>>
>> Alan
>> __________________________
>> Alan W. Irwin
>>
>> Astronomical research affiliation with Department of Physics and 
>> Astronomy,
>> University of Victoria (astrowww.phys.uvic.ca).
>>
>> Programming affiliations with the FreeEOS equation-of-state 
>> implementation
>> for stellar interiors (freeeos.sf.net); PLplot scientific plotting 
>> software
>> package (plplot.org); the libLASi project (unifont.org/lasi); the 
>> Loads of
>> Linux Links project (loll.sf.net); and the Linux Brochure Project
>> (lbproject.sf.net).
> 
> Yes, the static libraries are available on the system (in the default dir
> /usr/lib).
> 
> Thanks, Daniel
> 
If you explicitly link in the static libraries it should work.  Give 
full paths to the /usr/libSM.a.

-Bill



More information about the CMake mailing list