4.6pre1 Makefile link libraries

Ralf Corsepius corsepiu at faw.uni-ulm.de
Fri Mar 7 03:17:19 UTC 2003


Am Don, 2003-03-06 um 23.39 schrieb Wendell Thompson:
> FYI to anyone interested in these issues, see notes below:
Please file a PR (category make_build) into RTEMS gnats and assign it to
Joel. I refuse to look into this.

> Wendell Thompson wrote:
> > Ralf Corsepius wrote:
> > 
> >> Am Die, 2003-03-04 um 23.08 schrieb Wendell Thompson:
> >>
> >>> gregory.menke at gsfc.nasa.gov wrote:
> >>>
> >>>> Wendell Thompson writes:
> >>>> > For a C++ application with 4.6.0pre1, which link libraries need to 
> >>>> be > listed in the Makefile?
> >>>> > > The linker is complaining about even the C++ basics- operator 
> >>>> new, > operator delete, etc. Amongst other things.
> >>>> > 
> >>>
> >>>
> >>
> >> This indicates one of these
> >>
> >> * not using <target>-rtems-g++ to link.
> >> * not using make-cxx-exe to build the download-images
> >> * not having a make-cxx-exe in your <bsp>.cfg
> >>  
> > 
> 
> To use <target>-rtems-g++ to link, the rule for make-cxx-exe needs to 
> use $(LINK.cc) and include $(AM_CXXFLAGS) as below in <bsp>.cfg:
> 
> define make-cxx-exe
>          $(LINK.cc) $(AM_CFLAGS) $(AM_CXXFLAGS) $(AM_LDFLAGS) \
>              -o $(basename $@).exe \
>              -Xlinker -Map -Xlinker mapfile $(LINK_OBJS) $(LINK_LIBS)
> endef
> 
> The $(PGM) target in the application Makefile needs to call 
> $(make-cxx-exe) instead of $(make-exe):
> 
> $(PGM): $(OBJS) $(LINK_FILES)
>          $(make-cxx-exe)
> 
> 
> ?? Does anyone know where $(LINK.cc) is documented? I can't find it in 
> the info page for make.
> 
> > 
> > On to the next problem. The linker insists on including dummy.o from 
> > librtemscpu.a, even though the Init function is defined in the app files 
> > (in init5206.c):
> > 
> > m68k-rtems-g++ -B/opt/rtems/m68k-rtems/clc5206_am/lib/ -specs bsp_specs 
> > -qrtems   -g -Wall  -O4 -fomit-frame-pointer -g   -gstabs+   -m5200 
> > -DREV_B -DNUM_TL1_PORTS=3         -o o-optimize/rtems_demo.exe -Xlinker 
> > -Map -Xlinker mapfile  o-optimize/console.o o-optimize/init5206.o 
> > o-optimize/Sys_Task.o o-optimize/Leds.o o-optimize/Dig_Io.o 
> > o-optimize/Alarms.o o-optimize/Timer.o o-optimize/Ext_Ctrls.o 
> > o-optimize/Bit_Map.o o-optimize/Switches.o o-optimize/Lib.o 
> > o-optimize/Tl1_Port.o o-optimize/Port_Task.o o-optimize/Sio.o 
> > o-optimize/Buffer.o o-optimize/Modem.o o-optimize/Lists.o 
> > o-optimize/Message.o o-optimize/Am416Rtc.o o-optimize/SioRCF.o 
> > o-optimize/ds1302.o o-optimize/Globals.o o-optimize/NVRam.o 
> > o-optimize/tc58f400.o o-optimize/RTEMSTimer.o o-optimize/ModemMx614.o 
> > o-optimize/HalfDup_Tl1.o o-optimize/init.o 
> > /opt/rtems/m68k-rtems/clc5206_am/lib/no-dpmem.rel 
> > /opt/rtems/m68k-rtems/clc5206_am/lib/no-mp.rel 
> > /opt/rtems/m68k-rtems/clc5206_am/lib/no-part.rel 
> > /opt/rtems/m68k-rtems/clc5206_am/lib/librtems++.a
> > /opt/rtems/m68k-rtems/clc5206_am/lib/librtemscpu.a(dummy.o): In function 
> > `Init':
> > itimerspec/../../../../../../../cpukit/libmisc/dummy/dummy.c:150: 
> > multiple definition of `Init'
> > o-optimize/init.o:/usr/local/projects/cf_am416_revb_rtems-4.6pre1/init.cpp:44: 
> > first defined here
> > /opt/rtems/lib/gcc-lib/m68k-rtems/3.2.1/../../../../m68k-rtems/bin/ld: 
> > Warning: size of symbol `Init' changed from 2942 to 2 in 
> > /opt/rtems/m68k-rtems/clc5206_am/lib/librtemscpu.a(dummy.o)
> > /opt/rtems/m68k-rtems/clc5206_am/lib/librtemscpu.a(dummy.o)(.data+0x2c): 
> > undefined reference to `main'
> > collect2: ld returned 1 exit status
> > 
> > 
> 
> This and other mysterious linker errors disappeared with the addition of 
> "CONFIGURE_INIT" to the start of the application configuration table.
> 
> Configure carefully!
-- 
Ralf Corsepius
Forschungsinstitut fuer Anwendungsorientierte Wissensverarbeitung (FAW)
Helmholtzstr. 16, 89081 Ulm, Germany     Tel: +49/731/501-8690
mailto:corsepiu at faw.uni-ulm.de           FAX: +49/731/501-999  
http://www.faw.uni-ulm.de




More information about the users mailing list