gcc/ld init section and libraries

John Donoghue john.donoghue@ieee.org
Fri Aug 11 13:57:00 GMT 2006

John Love-Jensen writes: 

> Hi John, 
> The linker only pulls out .o from the .a that fulfill currently known
> (single pass) missing symbols. 
> The linker also takes any .o in its entirety, it doesn't check for missing
> symbols. 
> With the GNU linker, there is the -whole-archive switch.  So if you want
> libfoo.a wholesale, but libbar.a and libquux.a to only be used to fulfill
> missing symbols, do something like this: 
> gcc -o myapp alpha.c beta.c gamma.o delta.o -L. -Wl,-whole-archive -lfoo
> -Wl,-no-whole-archive -lbar -lquux 
> Because the linker perfoms a single pass for resolution of missing symbols
> in libraries (.so, or .a), order is very important.  And if you had an
> interdependency (ick ick! avoid avoid!) between, say, bar and quux, you may
> need to do something distasteful like -lbar -lquux -lbar. 
> HTH,
> --Eljay 

More information about the Gcc-help mailing list