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]
Other format: [Raw text]

Re: Crosscompiler: gcc 3.1 on linux for sparc ?


Heiko Nardmann wrote:
> 
> I have problems compiling gcc as a cross compiler.
> 
> I successfully build binutils 2.12.1 using the following command line:
> ./configure --host=i686-pc-linux-gnu --prefix=/opt/binutils-2.12.1
> - --target=sparcv9-solaris --enable-64-bit-bfd --enable-bfd-assembler
> - --enable-commonbfdlib
> 
> Now I configured gcc as follows:
> env PATH=/opt/binutils-2.12.1/bin:$PATH ../gcc-3.1/configure
> - --host=i686-pc-linux-gnu --prefix=/opt/sparc-crossgcc-3.1 --with-gnu-as
> - --with-as=/opt/binutils-2.12.1/bin/sparcv9-solaris-as --with-gnu-ld
> - --with-ld=/opt/binutils-2.12.1/bin/sparcv9-solaris-ld
> - --enable-threads=solaris --target=sparcv9-solaris
> 
> Is something wrong with this procedure?

 Yes, the value in '--prefix=' SHOULD ALWAYS BE THE SAME for binutils and
GCC !!!

 And what on earth the 'sparcv9-solaris' means ?  Is it Solaris2.7 or 2.8
or what ?  I wouldn't let configure to guess... A 'sparcv9-solaris2.8' could
be much more precise, please check the template in 'gcc/config.gcc' for your
choice and into which it leads... Let's assume it guessed right...

> Now I get the the error given as the attachment:
> env PATH=/opt/binutils-2.12.1/bin:$PATH make >& make.out

  The '$prefix/bin' ie. '/opt/sparc-crossgcc-3.1/bin' in the GCC-case should
be in the PATH, this is for the 'user-used' executables, but the 'GCC-used'
binutils SHOULD be in '$prefix/$target/bin', ie. in
'/opt/sparc-crossgcc-3.1/sparcv9-solaris/bin'... Then your '--with-as=' and
'--with-ld=' options are vain...

> It complains about missing abort(), missing thread.h and missing errno.h.

 You should have the 'sparcv9-solaris' headers preinstalled from the SUNWhea
or something packages or copied from the target system...

> /home3/nardmann/gcc-3.1.objdir/gcc/xgcc
> -B/home3/nardmann/gcc-3.1.objdir/gcc/
> -B/opt/sparc-crossgcc-3.1/sparcv9-solaris/bin/		<---- !!
> -B/opt/sparc-crossgcc-3.1/sparcv9-solaris/lib/		<---- !!
> -isystem /opt/sparc-crossgcc-3.1/sparcv9-solaris/include	<---- !!

into the place ($prefix/$target/include) pointed by the '-isystem' option
here... Please also see where the target binutils and target libs are expected
to be !

> /home3/nardmann/gcc-3.1/gcc/gthr-solaris.h:38:20: thread.h: Datei oder Verzeichnis nicht gefunden
> /home3/nardmann/gcc-3.1/gcc/gthr-solaris.h:39:19: errno.h: Datei oder Verzeichnis nicht gefunden

 These headers come with Solaris2, so please find them and install them, just as
the Solaris2 libraries...

 Ok, these were the basic rules but the 64-bit sparcv9-solaris2 target will need
deep understanding about the 64-bit target itself.  I have the Solaris2.7 libs and
headers but AFAIK there were only those 32-bit things, nothing for 'lib64' or
something... Or I have missed something.

Cheers, Kai


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


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