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