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]

still can't build cross compiler --target=i686-pc-linux-gnu on solaris


Title: still can't build cross compiler --target=i686-pc-linux-gnu on solaris

Hi all,

I continue to need this group's help, I'm still unable to
get my cross-compiler targeting linux running on solaris.
I just don't understand enough, if anyone has *any* notes
specific to building a cross-compiler on solaris (to be
hosted by solaris) but targeted for linux, I'd be most
appreciative of your notes.  (I hope someone has some
really good solaris->linux notes somewhere, but beggars
can't be choosers, so I'll gladly take anything.)

I'm trying to build gcc-2.95.3 and binutils-2.10.1 on a
solaris box using --target=i686-pc-linux-gnu and although
I seem to get the compiler to build (finally), I have no
confidence I've done it right, esp with ld errors saying
can't find crt1.o, and now, libc.so.6, which is my current
problem.

I've been using http://www.objsw.com/CrossGCC/ and everything
else I can find, but nothing seems to address all the problems
I seem to encounter.  I appreciate everyone suggesting new
URLs to read, but none of these seem to address the nittiest
of the grittiest details.

How specifically do I setup the target includes and the target
libraries when building the cross-compiler?  Where do I get
the linux libraries from?  Do I take /usr/lib or /lib from my
linux box?  And what subdirs can I exclude?  When I tar and
gzip /usr/lib on my linux box, I have a 93Mb tar file, surely
I don't need all those?

To me, it looks like I need both /lib and /usr/lib, but how do
I tell configure which one is which?  configure has --with-includes
but only one --with-libs option.  I've had people reply to me
that --with-include and --with-libs is "very bad hacking", and
that I should just copy them to where they are supposed to go,
of which I'm unable to infer until an error occurs, but the /lib
vs /usr/lib question (do I need them? where should they be copied
to? what do I need? what can I exclude?), I am finding way too
little information about this subtle but important requirement of
target libraries.  Are there any rules and guidelines that have
been written that apply to *all* platforms?  I mean, doesn't
every builder of a cross-compiler need to get the target
machine's headers and libraries and make them available
for the configure & building of the cross-compiler?  How
does one know which headers and libraries one needs?  Where
doee one know to get them from, how does one know what he needs,
where does one put them so that configure can find them?

I feel like I'll be experimenting forever hoping that I might
stumble upon something that works.

When I run the cross compiler, it fails to link with this error,

$ cd /home/davidt/gnu/bin-a4/bin
$ ./i686-pc-linux-gnu-gcc ~/tmp/x.c
/home/davidt/gnu/bin-a4/i686-pc-linux-gnu/bin/ld: cannot find /lib/libc.so.6
collect2: ld returned 1 exit status

Here is my last script that successfully builds a cross-compiler,
by 'successful' I mean it produces a gcc that says the target
machine when I use the -dumpmachine option,

$ cd /home/davidt/gnu/bin-a4/bin
$ ./i686-pc-linux-gnu-gcc -dumpmachine
i686-pc-linux-gnu

Note that I'm quite certain something is wrong with this script,
but I don't know where else to study & learn the Principles of
Building a GCC Cross-Compiler.  I'm sure my error is probably
due to the target libraries, see lines 46 and 48 below,

      1 #!/bin/sh
      2
      3 GCC=gcc-2.95.3
      4 BINUTILS=binutils-2.10.1
      5
      6 gcc_targz=/home/davidt/gnu/tar/$GCC.tar.gz
      7 binutils_targz=/home/davidt/gnu/tar/$BINUTILS.tar.gz
      8 #set linuxinc_tar=/home/davidt/gnu/tar/linux.tar
      9 linuxinc_targz=/home/davidt/gnu/tar/electron.inc.tar.gz
     10 linuxlib_targz=/home/davidt/gnu/tar/electron.lib.tar.gz
     11
     12 sourcedir=/home/davidt/gnu/src-a4
     13 installdir=/home/davidt/gnu/bin-a4
     14
     15 mkdir -p $sourcedir
     16 cd $sourcedir
     17
     18 # untar gcc source
     19 tar zxfp $gcc_targz
     20 # the source tree is in ./gcc-2.95.3/
     21
     22 # build native gcc
     23 mkdir $GCC-native
     24 cd $GCC-native
     25 ../$GCC/configure --enable-languages=c++ --prefix=$installdir --enable-shared
     26 make bootstrap
     27 make install
     28 cd ..
     29
     30 PATH=$installdir/bin:$PATH
     31 export PATH
     32
     33 # untar binutils source
     34 tar zxfp $binutils_targz
     35 # the source tree is in ./binutils-2.10.1/
     36
     37 # build binutils for linux
     38 mkdir $BINUTILS-linux
     39 cd $BINUTILS-linux
     40 ../$BINUTILS/configure --target=i686-pc-linux-gnu --prefix=$installdir
     41 make
     42 make install
     43 cd ..
     44
     45 # untar linux header files
     46 tar zxfp $linuxinc_targz
     47 # untar linux lib files
     48 tar zxfp $linuxlib_targz
     49
     50 # build gcc for linux target
     51 mkdir $GCC-linux
     52 cd $GCC-linux
     53 ../$GCC/configure --target=i686-pc-linux-gnu --with-headers=../include --enable-threads --enable-languages=c++ --prefix=$installdir --enable-shared --with-libs=../lib

     54 make
     55 make install
     56 cd ..

The best questions I can think to ask are,

1) How *exactly* should I build $linuxinc_targz and $linuxlib_targz?

2) Please explain if I need /lib or /usr/lib or both.
   A) What files *exactly* do I need?
      a) How could I have learned this myself?
   B) What files *exactly* do I NOT need?
      a) How could I have learned this myself?

3) How do I tell configure/make where these library files are?
   A) Should I use --with-libs or not?
      a) How do I tell configure/make about my target's /lib files?
      b) How do I tell configure/make about my target's /usr/lib files?

4) Why does building a cross-compiler make me feel so dumb?

Please provide the WHYs when answering any HOWs.  I appreciate
everyone's replies to my previous postings, I am soooo close, I
can smell victory.  This group is an absolute requirement to the
successful building of a cross-compiler, at least to this newbie.

Thanks.

--
David Thompson
Foster City, CA USA

------
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]