This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gcc/ld init section and libraries


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]