Can I mix static and shared-object libraries when linking?
Posted
by SiegeX
on Stack Overflow
See other posts from Stack Overflow
or by SiegeX
Published on 2010-06-02T01:09:36Z
Indexed on
2010/06/02
1:13 UTC
Read the original article
Hit count: 304
I have a C project that produces ten executables, all of which I would like to be statically linked. The problem I am facing is that one of these executables uses a 3rd-party library of which only the shared-object version is available.
If I pass the -static
flag to gcc, ld will error saying it can't find the library in question (I presume it's looking for the .a version) and the executable will not be built. Ideally, I would like to be able to tell 'ld' to statically link as much as it can and fail over to the shared object library if a static library cannot be found. In the interium I tried something like gcc -static -lib1 -lib2 -shared -lib3rdparty foo.c -o foo.exe
in hopes that 'ld' would statically link in lib1 and lib2 but only have a run-time dependence on lib3rdparty. Unfortunatly, this did not work as I intended; instead the -shared
flag overwrote the -static
flag and everything was compiled as shared-objects.
Is statically linking an all-or-nothing deal, or is there some way I can mix and match?
© Stack Overflow or respective owner