Cross Compiler Woes

Kai Ruottu karuottu@freenet.hut.fi
Sat Apr 1 00:00:00 GMT 2000


Terry Lee Tucker wrote:
> I'm working on a RedHat 5.2 system trying to create a cross compiler
> with a target of i486-pc-sco3.2v5.0. I have been working on this for
> about 4 weeks now. I am using gcc-2.7.2.3 and binutils-2.9.1.0.15. I am
> uisng these particular versions because they are the default on my
> RedHat 5.2 system.

 Yes they may be the default for the host, but are they supported enough
for the target?
 
> First, I configure binutils with --target=i486-pc-sco3.2v5.0. I compile
> and install it.

 The binutils-2.9.1 and even the current binutils snapshots may not
support
'i[34567]86-*-sco3.2v5*' in any way, just 'i[34567]86-*-sco3.2*, which
is
the 'i386-coff'-only version. Your binutils should give the 'elf_i386'
and
'i386coff' as supported formats. The SCO5 libs are elf.

> Next, I configure gcc with --target=i486-pc-sco3.2v5.0. I compile and
> install it. Ok, I'm excited; this thing may work!

Using gcc-2.7.2.3 may not work quite well, the gcc-2.8.1, egcs-1.1.x and
gcc-2.95.x should have much better support for the target peculiarities.

E:\usr\local\i386-sco3.2v5\bin>gcc-sco5 -v
Reading specs from \usr\local\lib\gcc-lib\i386-sco3.2v5\2_95.2\specs
gcc version 2.95.2 19991024 (release)

> No, it does not. When I try to compile a simple hello world program, I
> get the following:
> 
> [terry@esc terry]$ i486-pc-sco3.2v5.0-gcc -v -o hello hello.c
> /usr/local/i486-pc-sco3.2v5.0/lib/libc.a(_findbuf.o)(.text+0x5d):_findbuf.c:
> undefined reference to `st_fstat32'
> /usr/local/i486-pc-sco3.2v5.0/lib/libc.a(_findbuf.o)(.text+0x6e):_findbuf.c:
> undefined reference to `malloc'
> /usr/local/i486-pc-sco3.2v5.0/lib/libc.a(values-Xm.o)(.data+0x8):values-Xm.c:
> undefined reference to `_runtime_env'
> 
> The libc.a referenced above is right off the SCO box. I have searched
> every header, object file, and library on the SCO box using "strings"
> and "grep". The value "_runtime_env" It does not show up anywhere except
> libc.a referenced above.

 When living at this age of shared libs, the default library is of
course the
'libc.so', not 'libc.a'. There surely is at least that '_runtime_env' :

  E:\usr\local\i386-sco3.2v5\lib>nm libc.so | grep _runtime_env
                   U _runtime_env
  0000000002010008 A _runtime_env

> Does anyone have any idea why I'm getting these three errors?

 Perhaps your binutils don't support ELF at all, please see with

   /usr/local/i486-pc-sco3.2v5.0/bin/objdump --help
or
   /usr/local/i486-pc-sco3.2v5.0/bin/ld -V

or something which are the supported formats, emulations etc. Both ELF
and
COFF should be supported. Sometimes the native Linux binutils had them
both.

 Please also try the '-Wl,-verbose' in the GCC command line, to see
those
tries during the linking...

Cheers, Kai


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



More information about the crossgcc mailing list