Linker question about global vs. local symbols

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have a C++ embedded application which has a TON of symbols.  Because
of the way the target must be built, our link phase takes about 20
minutes on a Sun.  Several thousand of the symbols are currently global
but can be made local, because they are only used from the one source
file that contains them.  When developing and fixing bugs, we may do
compile / link cycles many times in a day. 

>From what I understand, all symbols (both local and global) always
appear in the symbol table for the GNU tool chain.  (Older compilers I
worked with didn't expose any local symbols outside of the .o). 

Would link times get reduced by making a large % of the symbols that are
currently global into local (ie, static) symbols?  Does the linker do a
filtering pass that walks all the objects and libraries in question to
build a list of global symbols that it later works on rather than always
trying to resolve each symbol off the full list? 

Splitting the app into smaller executables isn't possible because of the
architecture and cross dependencies. 

Any info anyone can give would be appreciated. 

Thanks,
	Dave


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux