[CMake] statically linked executables

Daniel Rueckert dr at doc.ic.ac.uk
Wed Nov 28 17:52:12 EST 2007


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

-- 
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