Mixed static and dynamic link on Mac OS

Posted by barbaz on Stack Overflow See other posts from Stack Overflow or by barbaz
Published on 2011-01-01T23:10:44Z Indexed on 2011/01/02 8:54 UTC
Read the original article Hit count: 261

Filed under:
|
|

I want to use gcc to produce a shared library, but i want to link some other libraries it depends on statically. Now to produce the "standard" dynamically linked output file i use

gcc -dynamiclib *.o -lfoo -lbar -o outfile

which would be

gcc -shared *.o -lfoo -lbar -o outfile

on for a binutils ld on a linux system. Now if i want libfoo and libbar to be linked statically, I can name the static libraries directly

gcc -dynamiclib *.o /usr/lib/libfoo.a /usr/lib/libbar.a -o outfile

however, that way i have to look for the library files myself. GNU binutils ld supports this:

gcc -shared *.o -l:libfoo.a -l:libbar.a -o outfile

but apple's ld doesnt.

  • Is there a way to make apple's ld look for the static libraries himself?
  • If not, is there another way that would avoid naming the exact location of the archives, e.g. producing an intermediate output file out of the object files requiring libfoo and libbar with the -static switch and linking that file together with the remaining objectfiles to create the dynamic object?

© Stack Overflow or respective owner

Related posts about c

    Related posts about mac