pc386 - hello world linker problem
Lars Munch
lars at segv.dk
Tue Nov 9 18:40:32 UTC 2004
On Tue, Nov 09, 2004 at 05:38:31PM +0100, Ralf Corsepius wrote:
> On Mon, 2004-11-08 at 23:36, Lars Munch wrote:
> > Hello
> >
> > I have been playing a bit with bochs and added a small contribution
> > about creating FAT32 hard disk images for bochs to the wiki. Now its
> > time to actually build "hello world" for pc386 myself to run in bochs,
> > but due to a linker error I have not had any success on this part yet.
> >
> > I am using:
> > binutils-2.13.2.1-rtems-20030901.diff
> > binutils-2.13.2.1.tar.bz2
> > gcc-3.2.3-rtems-20040420.diff
> > gcc-3.2.3.tar.bz2
> > newlib-1.11.0-rtems-20031113.diff
> > newlib-1.11.0.tar.gz
> >
> > Binutils is configured with:
> > # configure --target=i386-rtems --prefix=/opt/rtems/i386-rtems
> >
> > Gcc is configured with:
> > # configure --target=i386-rtems --prefix=/opt/rtems/i386-rtems \
> > --with-gnu-as --with-gnu-ld --with-newlib --verbose --enable-threads \
> > --enable-languages="c,c++"
> >
> > RTEMS from cvs HEAD is configured with:
> > # configure --target=i386-rtems --enable-rtemsbsp=pc386 \
> > --prefix=/opt/rtems/i386-rtems --disable-cxx --disable-itron \
> > --enable-posix --disable-tests
> >
> > Now building examples/hello_world_c gives the following:
> >
> > test -d o-optimize || mkdir o-optimize
> > i386-rtems-gcc --pipe -B/opt/rtems/i386-rtems/i386-rtems/pc386/lib/
> > -specs bsp_specs -qrtems -g -Wall -O4 -g -c -o
> > o-optimize/test.o test.c
> > In file included from test.c:31:
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/include/confdefs.h:4:2:
> > warning: #warning <confdefs.h> is deprecated, use <rtems/confdefs.h>
> > instead
> > i386-rtems-gcc --pipe -B/opt/rtems/i386-rtems/i386-rtems/pc386/lib/
> > -specs bsp_specs -qrtems -g -Wall -O4 -g
> > -Wl,-Ttext,0x00100000 -o o-optimize/hello.obj o-optimize/test.o
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-dpmem.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-event.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-msg.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-mp.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-part.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-signal.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-timer.rel
> > /opt/rtems/i386-rtems/i386-rtems/pc386/lib/no-rtmon.rel
> > /opt/rtems/i386-rtems/lib/gcc-lib/i386-rtems/3.2.3/../../../../i386-rtems/bin/ld:
> > cannot open linker script file c: No such file or directory
> > collect2: ld returned 1 exit status
> > make: *** [o-optimize/hello.exe] Error 1
> >
> > This is my first time using RTEMS for i386, so any pointer are highly
> > appreciated.
> The cause for this breakdown is a typo in RTEMS gcc-patch, which had
> been reported and fixed looong time ago. Unfortunately it still seems to
> be contained in RTEMS current toolchain.
>
>
> As a work around, check your
> /opt/rtems-4.6/lib/gcc-lib/i386-rtems/3.2.3/specs
>
> for the "lib:"-rule and edit -gcc into -lgcc in this line.
>
>
> --- /opt/rtems-4.6/lib/gcc-lib/i386-rtems/3.2.3/specs~ 2004-10-27 16:43:43.000000000 +0200
> +++ /opt/rtems-4.6/lib/gcc-lib/i386-rtems/3.2.3/specs 2004-10-27 16:43:43.000000000 +0200
> @@ -45,7 +45,7 @@
>
>
> *lib:
> -%{!qrtems: %{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}} %{!nostdlib: %{qrtems: --start-group %{!qrtems_debug: -lrtemsbsp -lrtemscpu} %{qrtems_debug: -lrtemsbsp_g -lrtemscpu_g} -lc -gcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}
> +%{!qrtems: %{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}} %{!nostdlib: %{qrtems: --start-group %{!qrtems_debug: -lrtemsbsp -lrtemscpu} %{qrtems_debug: -lrtemsbsp_g -lrtemscpu_g} -lc -lgcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}
>
> *libgcc:
> -lgcc
Thanks Ralf. Now it compiles nicely.
-- Lars Munch
More information about the users
mailing list