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