Building a cross-compiler
Wenton L. Davis
wenton@ieee.org
Thu Jan 31 15:33:00 GMT 2008
Michael Witten wrote:
>
> On 28 Jan 2008, at 6:44 PM, Wenton L. Davis wrote:
>
>> John Carter wrote:
>>>
>>> It's a _very_ dark art....
>> No kidding!!!!
>
> I disagree wholeheartedly.
>
> Creating a cross compiler _should_ be the easiest
> thing in the world, but the gcc is so backasswards
> that it can be troublesome.
>
I definitely agree that this should be one of the simplest tasks,
because it's so vital. I will say that building the native compiler was
1..2..3.. simple. I got the kernal to compile more easily than this!
>>>
>>> Last time I did it, I found I had to have the binutils --prefix
>>> directory
>>> the same --prefix as the compiler.
>
> This is definitely the case; gcc is really just an
> interface to a bunch of different tools, so it needs
> to know where to find those tools.
>
> It would be nice if there were a configure directive
> to specify the location of binutils tools for greater
> flexibility. For now, just make --prefix the same for
> both.
>
> In any case, you're supposed to be able to put the
> binutils source subdirectories (gprof, opcodes,
> bintutils, ...) inside the top level of the gcc source
> code so that one configure invocation handles both; both
> source trees are actually 2 separate views of a larger
> tree.
>
I'm not sure I understand you clearly. Right now, in my /mnt/tmp
directory, I have a binutils-2.18.50 directory, and a gcc-4.1.2
directory (and all the others that were results of building). Are you
saying the binutils directory should be moved up into the gcc-4.1.2
directory?
>> At this point, I tried the brute force, copying the exact command
>> line, but adding to it the -I../../(etc) to find the unistd.h and
>> pthreads.h, but it failed because of an #endif without #if error... I
>> thought I'd manually modify this file, but it was automagically
>> created by fixincludes. (?!?!?)
>
> Do you need libc on these other targets? If not, use
> --without-headers to indicate that you have no intention
> of building libc or the runtime libraries like libstdc++.
> See below.
>
Well, the answer to this is "eventually." For now, just the compiler is
needed, and eventually, I will need the libc. I suppose that if I can
get the compiler built, I'll be able to use it to build the libc.
(Since most of my targets communicate via RS-232c, libc will need to be
customized anyway.)
So, I went ahead with the --without-headers, and I eliminated the
--enable-threads and --enable-shared. Now, I run make, and I see
several of these:
Next, I had to disable libssp because it failed (because it needs
libc?) Not happy about eliminating this, but I'll deal with it.
and viola! there it is! I had to do a "echo $?" just to make sure I
wasn't imagining things!
My final configure command line was:
../gcc-4.1.2/configure --prefix=/mnt/tmp --program-prefix=mips-elf-
--target=mips-elf --enable-languages=c --disable-checking --verbose
--without-headers --disable-nls --disable-libssp
Now, I am assuming that this is just about the bare-bones compiler, but
I have something I can work with now.
THANKS ALL!!!!
I will go ahead and try John's scripts and see how they work for me, but
now that I can at least get something working, I have a better (slightly
better) clue what I'm doing.
Just for the sake of neatness, here's what I did (either run as root or
use sudo for the install steps!):
export DESTINATION=/usr/local
export TARGET=mips-elf
mkdir objdir
tar jxvf binutils-2.18.50.tar.bz2
tar zxfv gcc-core-4.1.2.tar.gz [&& other gcc-(lang)-4.1.2.tar.gz optional]
cd objdir
../binutils-2.18.50/configure --prefix=$DESTINATION \
--target=$TARGET --program-prefix=$(TARGET)-
make
make install
../gcc-4.1.2/configure --prefix=$DESTINATION \
--program-prefix=$(TARGET)- --target=$TARGET \
--enable-languages=c --without-headers --disable-nls --disable-libssp
make
make install
I hope this helps someone. Thanks, again, everyone that helped me!
(Still open to suggestions on building the various libc's! :-) )
Wenton L. Davis
wenton@ieee.org
More information about the Gcc-help
mailing list