This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

linking newlib (libc.a crt0.o) for powerpc-ibm-eabi target on i686-pc-cygwinhost


I am experiencing problems when cross-compiling programs with GCC that
involve a linking stage.  I believe they are related to the library
"libc.a" and the startup file "crt0.o".  It is my understanding that these
files are installed with newlib and they appear to be present.  This
appears to be the same problem Dan Alderman experienced on Feb 12, 2001 and
posted to this mailing list.  Dan, if you could remember how you solved
this problem your help would be greatly apprecieated.  I am new to the UNIX
environment and C-programming.  Building GCC as a cross-compiler has been
my first project so I'm a bit confused.  I've tried reading all the FAQs
and mailing lists to no avail.  Any help is greatly appreciated.

Here is what I did to install an i686-pc-cygwin hosted powerpc-unknown-eabi
cross-compiler in "/usr/local".  Source files were unpacked into
"/usr/local/src".  Packages were built in "/usr/local/obj"...


cygwin$  host=i686-pc-cygwin
cygwin$  build=$host
cygwin$  target=powerpc-unknown-eabi
cygwin$  prefix=/usr/local
cygwin$  srcroot=$prefix/src
cygwin$  buildroot=$prefix/obj


First, I configure, build, and install binutils...


cygwin$  mkdir -p $buildroot/binutils
cygwin$  cd $buildroot/binutils
cygwin$  $srcroot/binutils-2.10.1/configure \
   --with-included-gettext \
   --host=$host --target=$target --build=$build \
   --prefix=$prefix -v
cygwin$  make >make.log 2>&1
cygwin$  make install >install.log 2>&1


Next, I configure, build, and install the GCC C compiler...


cygwin$  mkdir -p $buildroot/gcc
cygwin$  cd $buildroot/gcc
cygwin$  $srcroot/gcc-2.95.3-5/configure \
   --enable-languages=c,c++ \
   --with-included-gettext \
   --with-cpu=powerpc \
   --host=$host --target=$target --build=$build \
   --with-newlib \
   --prefix=$prefix -v
cygwin$  make LANGUAGES=c all-gcc >make_c_only.log 2>&1
cygwin$  make LANGUAGES=c install-gcc >install_c_only.log 2>&1


Next, I configure, build, and install newlib...


cygwin$  mkdir -p $buildroot/newlib
cygwin$  cd $buildroot/newlib
cygwin$  $srcroot/newlib-1.9.0/configure \
   --host=$host --target=$target --build=$build \
   --prefix=$prefix -v
cygwin$  make >make.log 2>&1
cygwin$  make install >install.log 2>&1


Next, I configure, build, and install the remaining GCC compilers, and
language runtime and/or support libraries...


cygwin$ cd $buildroot/gcc
cygwin$ make >make.log 2>&1
cygwin$ make install >install.log 2>&1


At this point, I I realize there are problems during compiles with a
linking stage.  After reading numerous FAQs, mailing list archives, etc, I
try to reconfigure, rebuild, and reinstall newlib with some additional
options...


cygwin$  cd $buildroot/newlib
cygwin$  mv make.log make.log.old
cygwin$  mv install.log install.log.old
cygwin$  make distclean
cygwin$  $srcroot/newlib-1.9.0/configure \
   --host=$host --target=$target --build=$build \
   --prefix=$prefix -v
cygwin$  make \
   CC_FOR_TARGET=$prefix/bin/$target-gcc \
   AS_FOR_TARGET=$prefix/bin/$target-as \
   LD_FOR_TARGET=$prefix/bin/$target-ld \
   AR_FOR_TARGET=$prefix/bin/$target-ar \
   RANLIB_FOR_TARGET=$prefix/bin/$target-ranlib \
   NM_FOR_TARGET=$prefix/bin/$target-nm \
   >make.log 2>&1
cygwin$  make install >install.log 2>&1


These are the problems I am experiencing...


cygwin$  $target-gcc helloworld.c
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/../../../../powerpc-unknown-eabi/bin/ld:

warning: cannot find entry symbol _start; defaulting to 01800074
/c/TEMP/ccWya32M.o: In function `main':
/c/TEMP/ccWya32M.o(.text+0x24): undefined reference to `printf'
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/libgcc.a(eabi.o)
(.got2+0x8): undefined reference to `__SDATA_START__'
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/libgcc.a(eabi.o)
(.got2+0xc): undefined reference to `__SBSS_END__'
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/libgcc.a(eabi.o)
(.got2+0x14): undefined reference to `__SDATA2_START__'
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/libgcc.a(eabi.o)
(.got2+0x18): undefined reference to `__SBSS2_END__'
/usr/local/lib/gcc-lib/powerpc-unknown-eabi/2.95.3-5/libgcc.a(eabi-ctors.o):

In function `__do_global_ctors':
/usr/local/obj/gcc/gcc/eabi-ctors.c(.sdata+0x0): undefined reference to
`__init'
/usr/local/obj/gcc/gcc/eabi-ctors.c(.sdata+0x4): undefined reference to
`__fini'
collect2: ld returned 1 exit status


I believe that _start is supposed to be defined in crt0.o but I added -e
main to bypass this.  Does anyone know ehat eabi.o does or why eliminating
it reduces the errors?  Here is what I tried next...


cygwin$  $target-gcc -e main -mno-eabi helloworld.c
/c/TEMP/ccwCYRid.o: In function `main':
/c/TEMP/ccwCYRid.o(.text+0x20): undefined reference to `printf'
collect2: ld returned 1 exit status


Next I added the -L\usr\local\$target\lib command.  There are files called
libc.a and crt0.o in that directory.  This had no effect...


cygwin$  $target-gcc -e main -mno-eabi -L\usr\local\$target\lib
helloworld.c
/c/TEMP/ccFfHYTg.o: In function `main':
/c/TEMP/ccFfHYTg.o(.text+0x20): undefined reference to `printf'
collect2: ld returned 1 exit status


Finally I added the -lc to force libc.a to be linked.  Again, no effect...


cygwin$  $target-gcc -e main -mno-eabi -L\usr\local\$target\lib -lc
helloworld.c
/c/TEMP/ccTbWSZk.o: In function `main':
/c/TEMP/ccTbWSZk.o(.text+0x20): undefined reference to `printf'
collect2: ld returned 1 exit status


Any sugestions???  if I add the -msim option it compiles correctly for the
simulation board but in that case libc.a and crt0.o are not used.

Regards,
Tony Ferranti
ferranti@us.ibm.com


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]