tags:

views:

63

answers:

2

I have an application which links to a number of libraries, most of them are available as both static as well as dynamic library on my machine. Below is the output of the ldd command.

linux-gate.so.1 =>  (0xffffe000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb782c000)
libc.so.6 => /lib/libc.so.6 (0xb76cc000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb755a000)
/lib/ld-linux.so.2 (0xb788d000)
libdl.so.2 => /lib/libdl.so.2 (0xb7555000)
libz.so.1 => /lib/libz.so.1 (0xb7540000)

I want to statically link libssl library but as per the gcc documentation, by default it links every library dynamically. What is the method to tell gcc to link a specific library statically even its dynamic version is also available on the system?

A: 

gcc has a -static flag.

facha
but it will force all libraries to link statically. I want to link some libraries statically and some dynamically.
Ravi Gupta
-static keyword will enforce linking libraries that come after it statically linked. and samewise for the -dynamic flag. this way you can specify which ones to link dynamically and which ones to link statically.
bad zeppelin
@bad zeppelin: Could you give us an example please?
jyzuz
gcc a.o b.o ... z.o -Wl,-B,static -lfoo -Wl,-B,dynamic -lbar
bad zeppelin