ld includes entire archive (.a) when compiling .elf file

Josh Keller jkeller@keytechinc.com
Fri Mar 10 22:46:00 GMT 2006


The map file says the archive member is included.  However, I only make
one call to an empty function (I'm testing to see what's included) in my
main() called OSInitHookEnd (first line listed below).  I'm not sure why
it's pulling in the rest of the libucos_ii.a archive.
-Josh

The top of the map file is as follows:

$ more main.map
Archive member included because of file (symbol)

ucos_ii/libucos_ii.a(os_cpu_c.o)
                              main.o (OSInitHookEnd)
ucos_ii/libucos_ii.a(os_core.o)
                              ucos_ii/libucos_ii.a(os_cpu_c.o)
(OSIntCtxSwFlag)
ucos_ii/libucos_ii.a(os_mem.o)
                              ucos_ii/libucos_ii.a(os_core.o)
(OS_MemInit)
ucos_ii/libucos_ii.a(os_q.o)  ucos_ii/libucos_ii.a(os_core.o) (OS_QInit)
ucos_ii/libucos_ii.a(os_task.o)
                              ucos_ii/libucos_ii.a(os_core.o)
(OSTaskCreateExt)
ucos_ii/libucos_ii.a(os_cpu_a.o)
                              ucos_ii/libucos_ii.a(os_core.o)
(OSStartHighRdy)
ucos_ii/libucos_ii.a(os_time.o)
                              ucos_ii/libucos_ii.a(os_core.o)
(OSTimeDly)
/usr/local/gnu/lib/gcc-lib/arm-elf/3.3/libgcc.a(_udivsi3.o)
                              main.o (__udivsi3)
/usr/local/gnu/lib/gcc-lib/arm-elf/3.3/libgcc.a(_dvmd_tls.o)
 
/usr/local/gnu/lib/gcc-lib/arm-elf/3.3/libgcc.a(_udivsi3.o) (__div0)
/usr/local/gnu/lib/gcc-lib/arm-elf/3.3/../../../../arm-elf/lib/libc.a(st
rlen.o)
                              interrupt_Usart.o (strlen) 

 BTW, the end application is a small microcontroller (with 64kb of FLASH
w/16kb of RAM) so code space is an issue for me.  I plan on switching
the processor into THUMB mode later once I have these kinks worked out.
Thanks!

-Josh



More information about the Binutils mailing list