This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more infromation.


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

Re: ld needing libgcc


Philip Blundell writes:
 > >When I compile and link I need to append -lgcc to the command,
 > >as well as adding the folling link:
 > >> cd ${prefix}/arm-elf/arm-elf/lib; ln -s ../../lib/gcc-lib/arm-elf/2.95/libgc
 > >c.a  .
 > >
 > >in order for the program to link, else it can't find _gccmain().
 > >Is this correct, or have I missed some step in the build/install?
 > 
 > What is the exact command you use for linking?

The problems seems to be that I'm using ld directly for the link,
instead letting gcc to the link, but when I use gcc I get other link
error from libc.a which I don't using ld.

> From: Mark Pulver <mpulver@research.canon.com.au>
> To: greyham@research.canon.com.au (Graham Stoney)
> Subject: Re: ld needing libgcc
> Date: Mon, 16 Aug 1999 14:28:02 +1000 (EST)
> 
> Graham Stoney writes:
>  > Are you using 'gcc' to perform the final link?
>  > It sounds like you may be running 'ld' directly, and it doesn't know about
>  > libgcc; try running 'gcc' instead -- it will pass the required flags to 'ld'.
> Yes, I'm using ld for the final link as:
> % arm-elf-ld -Map map --verbose --entry entry_point -static -T arm.link --cref -o bounce3.elf demo/bounce3.o salib.alf  -lgcc
> ! GNU ld version 2.9.4 (with BFD 2.9.4.0.1)
> !   Supported emulations:
> !    armelf
> ! opened script file arm.link
> ! attempt to open boot.o succeeded
> ! boot.o
> ! attempt to open demo/bounce3.o succeeded
> ! demo/bounce3.o
> ! attempt to open salib.alf succeeded
> ! (salib.alf)irq.o
> ! (salib.alf)irqlib.o
> ! (salib.alf)platform.o
> ! (salib.alf)driver.o
> ! (salib.alf)lcd.o
> ! (salib.alf)led.o
> ! (salib.alf)timer.o
> ! (salib.alf)crt.o
> ! (salib.alf)irqtrap.o
> ! (salib.alf)control.o
> ! (salib.alf)devnode.o
> ! (salib.alf)iolib.o
> ! attempt to open ${prefix}arm-elf/arm-elf/lib/libgcc.a succeeded
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)__main.o
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)_ctors.o
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)_divsi3.o
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)_dvmd_tls.o
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)_udivsi3.o
> ! (${prefix}arm-elf/arm-elf/lib/libgcc.a)_umodsi3.o
> 
> If I try using gcc as you suggest if fails with a link error trying
> to load something from libc.a which my link doesn't:
> %  arm-elf-gcc -Xlinker -Map -Xlinker map -Xlinker --verbose -static -Xlinke-T -Xlinker arm.link -Xlinker --cref -o bounce3.elf demo/bounce3.o salib.alf
> ! ${prefix}arm-elf/arm-elf/lib/libc.a(syscalls.o): In function `_sbrk':
> ! /a/elph/projects/rama/armbuild/gcc-2.95/arm-elf/newlib/libc/sys/arm/syscalls.c:437: undefined reference to `__end__'
> ! GNU ld version 2.9.4 (with BFD 2.9.4.0.1)
> !   Supported emulations:
> !    armelf
> ! opened script file arm.link
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/crtbegin.o succeeded
> ! ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/crtbegin.o
> ! attempt to open ${prefix}arm-elf/arm-elf/lib/crt0.o succeeded
> ! ${prefix}arm-elf/arm-elf/lib/crt0.o
> ! attempt to open boot.o succeeded
> ! boot.o
> ! attempt to open demo/bounce3.o succeeded
> ! demo/bounce3.o
> ! attempt to open salib.alf succeeded
> ! (salib.alf)irq.o
> ! (salib.alf)irqlib.o
> ! (salib.alf)platform.o
> ! (salib.alf)driver.o
> ! (salib.alf)lcd.o
> ! (salib.alf)led.o
> ! (salib.alf)timer.o
> ! (salib.alf)crt.o
> ! (salib.alf)irqtrap.o
> ! (salib.alf)control.o
> ! (salib.alf)devnode.o
> ! (salib.alf)iolib.o
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.so failed
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a succeeded
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)__main.o
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)_divsi3.o
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)_dvmd_tls.o
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)_exit.o
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)_udivsi3.o
> ! (${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a)_umodsi3.o
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libc.so failed
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libc.a failed
> ! attempt to open ${prefix}arm-elf/arm-elf/lib/libc.so failed
> ! attempt to open ${prefix}arm-elf/arm-elf/lib/libc.a succeeded
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)findfp.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)fwalk.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)impure.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)mallocr.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)memset.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)mlock.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)sbrkr.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)stdio.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)syscalls.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)writer.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)closer.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)errno.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)fflush.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)freer.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)lseekr.o
> ! (${prefix}arm-elf/arm-elf/lib/libc.a)readr.o
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.so failed
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/libgcc.a succeeded
> ! attempt to open ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/crtend.o succeeded
> ! ${prefix}arm-elf/lib/gcc-lib/arm-elf/2.95/crtend.o
> ! collect2: ld returned 1 exit status
> 
> Mark
> 

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


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