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