[CMake] statically linked executables

Daniel Rueckert dr at doc.ic.ac.uk
Thu Nov 29 04:34:07 EST 2007


Bill Hoffman wrote:
> 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

Thanks. Unfortunately I cannot specify /usr/libSM.a via ccmake, there is
not option for this (in contrast to all the other X11 libs).

Daniel

-- 
Daniel Rueckert, Ph.D.
Department of Computing
Imperial College London
180 Queens' Gate                         Tel: +44 20 7594 8333
London SW7 2AZ                           Fax: +44 20 7581 8024
mailto:D.Rueckert at imperial.ac.uk         http://www.doc.ic.ac.uk/~dr


More information about the CMake mailing list