Linking application and BSP
Michael P. Collins on korat
mcollins at hawkeye.sps.mot.com
Thu Sep 21 19:45:14 UTC 2000
I'm still having problems.
My bsp_specs file is the one used in efi332. The one from gen68340 is
essentially identical, and yields the same result -- I must have "start.o"
in my build directory or the final link fails. My Makefile and the
gcc output are appended. Perhaps there's a clue in there. Comments
follow.
--------------------------------------------------------------------------
#
# %M% %I%
#
# Top-level Makefile for MC68331-based characterization system.
#
# Latest delta: %E% %U%
# Retrieved: %D% %T%
#
ROM_LIBPATH = /usr/local/rtems/lz120_ROM/lib
CPU_FAMILY = mcpu32
AS = m68k-rtems-as
CC = m68k-rtems-gcc
ASFLAGS = -f
CFLAGS = \
-qrtems \
-Wall \
-ansi \
-$(CPU_FAMILY) \
-Wno-unused
LFLAGS = \
--pipe \
-qrtems \
-Wall \
-ansi \
-fasm \
-$(CPU_FAMILY) \
-Wno-unused
OBJECTS = \
cmd/adc.o \
cmd/baud.o \
cmd/bf.o \
cmd/dac.o \
cmd/go.o \
cmd/help.o \
cmd/led.o \
cmd/load.o \
cmd/md.o \
cmd/mm.o \
cmd/rev.o \
cmd/sc.o \
cmd/sine.o \
init/init.o \
lib/atolx.o \
lib/b_hatoi.o \
lib/checksum.o \
lib/inpstr.o \
lib/parse.o \
lib/prntln.o \
lib/read_record.o \
lib/s_hatoi.o \
lib/updcrc.o \
cli/cli.o \
qsm/qspi_init.o \
qsm/qspi_rd.o \
qsm/qspi_wr.o \
sys/sys_init.o \
sys/sys_sv.o
all:
rm -f rom.s19
$(MAKE) rom
rom:
cd cmd; $(MAKE) objects
cd init; $(MAKE) objects
cd lib; $(MAKE) objects
cd cli; $(MAKE) objects
cd qsm; $(MAKE) objects
cd sys; $(MAKE) objects
$(CC) $(CFLAGS) -v --pipe -B$(ROM_LIBPATH) \
--specs $(ROM_LIBPATH)/bsp_specs \
-o rom.o \
$(OBJECTS) \
$(LFLAGS) -L $(ROM_LIBPATH) \
-Xlinker -Map -Xlinker lz120_ROM.map -Xlinker --cref
m68k-rtems-objcopy -O srec rom.o rom.s19
clean:
rm -f rom.s19 rom.map $(OBJECTS)
--------------------------------------------------------------------------
Makefile comments:
The options are a combination of those I've used with this application
under 4.0 and what are used when the sample applications are built. I
can't find any documentation for "--pipe" and I don't understand the
purpose of "-B", nor do they have any effect on the result that I can
tell.
Something I don't understand from the sample applications build is
the inclusion of a number of ".rel" files (i.e., <bsp>/lib/no-event.rel).
Is there any reason I should link these into my application? It seems to
work just fine when references are resolved from the libraries.
--------------------------------------------------------------------------
Final link output:
m68k-rtems-gcc -qrtems -Wall -ansi -mcpu32 -Wno-unused -v --pipe -B/usr/local/rtems/lz120_ROM/lib \
--specs /usr/local/rtems/lz120_ROM/lib/bsp_specs \
-o rom.o \
cmd/adc.o cmd/baud.o cmd/bf.o cmd/dac.o cmd/go.o cmd/help.o cmd/led.o cmd/load.o cmd/md.o cmd/mm.o cmd/rev.o cmd/sc.o cmd/sine.o init/init.o lib/atolx.o lib/b_hatoi.o lib/checksum.o lib/inpstr.o lib/parse.o lib/prntln.o lib/read_record.o lib/s_hatoi.o lib/updcrc.o cli/cli.o qsm/qspi_init.o qsm/qspi_rd.o qsm/qspi_wr.o sys/sys_init.o sys/sys_sv.o \
--pipe -qrtems -Wall -ansi -fasm -mcpu32 -Wno-unused -L /usr/local/rtems/lz120_ROM/lib \
-Xlinker -Map -Xlinker lz120_ROM.map -Xlinker --cref
Reading specs from /usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/specs
Reading specs from /usr/local/rtems/lz120_ROM/lib/bsp_specs
rename spec cpp to old_cpp
rename spec lib to old_lib
rename spec endfile to old_endfile
rename spec startfile to old_startfile
rename spec link to old_link
gcc version 2.95.2 19991024 (release)
/usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/collect2 -dc -dp -N -e start -o rom.o start.o /usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/crti.o /usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/crtbegin.o -L /usr/local/rtems/lz120_ROM/lib -L/usr/local/rtems/lz120_ROM/lib -L/usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/mcpu32 -L/usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2 -L/usr/local/rtems/m68k-rtems/lib/mcpu32 -L/usr/local/rtems/m68k-rtems/lib cmd/adc.o cmd/baud.o cmd/bf.o cmd/dac.o cmd/go.o cmd/help.o cmd/led.o cmd/load.o cmd/md.o cmd/mm.o cmd/rev.o cmd/sc.o cmd/sine.o init/init.o lib/atolx.o lib/b_hatoi.o lib/checksum.o lib/inpstr.o lib/parse.o lib/prntln.o lib/read_record.o lib/s_hatoi.o lib/updcrc.o cli/cli.o qsm/qspi_init.o qsm/qspi_rd.o qsm/qspi_wr.o sys/sys_init.o sys/sys_sv.o -Map lz120_ROM.map --cref -lgcc --start-group -lrtemsall -lc -lgcc --end-group -T linkcmds -lgcc /usr/local/rtems/lib/gcc-lib/m68k-rtems/2.95.2/crtend.o /usr/local/rtems/lib/gcc-lib/m68k-rtem!
!
s/2.95.2/crtn.o
/usr/local/rtems/m68k-rtems/bin/ld: cannot open start.o: No such file or directory
collect2: ld returned 1 exit status
m68k-rtems-gcc: file path prefix `/usr/local/rtems/lz120_ROM/lib' never used
make: *** [rom] Error 1
--------------------------------------------------------------------------
The "file path prefix never used" warning is apparently related to
the "-B" option, as it goes away if that option is removed. If I put
"start.o" in the build directory, I get a working binary.
Any suggestions?
-- MC --
More information about the users
mailing list