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