Re: need help producing statically linked executable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey Charlie

Thanks. I knew that ldd would list the static libraries.

ldd doesn't really list the static libraries, but it lists the depending shared libraries of an executable/shared libraries (as for example found in the readelf -d output of an ELF executable/shared library)

What I am looking for is an automated way to transform
the dynamic linking command into the static link command.
I guess I can parse the output of ldd through a perl script
that generates "-llinux-vdso -lidn ...". But this seems so
primitive. Isn't there an elegant way to ask the linker
to do that work for you?

I don't know/doubt if there's any solution by using the gcc driver and the -static option. But, maybe the pkg-config utility will do the work for you. It allows you to manually specify all the library dependencies (as returned by the ldd output) and then easily include all these depending libraries into your build. Check out the pkg-config(1) man page.

Some libraries might also be shipped with a pre-configured pkg-config file *.pc. For example, my distro includes a pre-configured file for libcurl under /usr/lib/pkgconf/libcurl.pc. If I then use

pkg-config --static --libs libcurl

I get the following output:

-lcurl -lidn -llber -lldap -lrt -lgssapi_krb5 -lz -lgnutls -lgcrypt

This might not be sufficient because some of the libraries are missing, but you could easily extend this package or create a new one.

You could then include this into your build as follows:

gcc <your_options> -static `pgk-config --static --libs libcurl`


I hope that helps at least a little bit ...

Best regards,
Andi



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux