From: Kumba <kumba@gentoo.org>
To: linux-mips@linux-mips.org
Subject: Re: Trouble compiling MIPS cross-compiler
Date: Sun, 18 Jan 2004 00:36:31 -0500 [thread overview]
Message-ID: <400A1B5F.6010307@gentoo.org> (raw)
In-Reply-To: <200401181510.35686@korath>
Adam Nielsen wrote:
> I was just following the linux-mips.org FAQ for building a cross compiler.
> The errors were something to do with missing headers (pthread.h among others)
> so I tried configuring gcc with --disable-threads as suggested in a post
> Google found, and so far that seems to be working...except just as I wrote
> that it came up with this:
>
> /usr/mips-linux/bin/ld: cannot open crti.o: No such file or directory
>
> Now I see why it says on the FAQ that building a cross compiler has always
> been the hardest step - it's certainly a lot harder than you'd expect (at
> least for a cross-compiler newbie like me ;-)) I was thinking it would be a
> simple matter of compiling a few programs in a certain order and that'd be
> it, but it seems that there are huge differences between versions - the
> instructions use ecgs-1.1.2 and binutils-2.13.2.1, but to compile linux-2.6.0
> you need newer than ecgs-1.1.2, but using gcc-3.x means upgrading to
> binutils-2.14, but then when you've done that gcc-3.x won't compile so you
> try gcc-2.95.3 instead, but that means you have to go back to
> binutils-2.13.2.1 but then gcc-2.95.3 is still too old to compile the kernel,
> so you *need* gcc-3.x but that won't compile...grrr!!! ;-)
I can't guarantee the below will work for you, but it has produced a
cross-compiler on my sparc64 machine (I now use an i686->mips
cross-compiler), but the instructions should be easily adaptable.
The commands assume you are building in a separate build directory in
the source tree (i.e. glibc-x.y.z/buildhere/).
I'd recommend the following:
binutils-2.14.90.0.7 (or you can try the latest .8 release, it has some
more mips fixes in it)
glibc-2.3.2 (or 2.3.1)
gcc-3.3.2
CVS snaps of latest gcc/glibc/binutils may also work as well.
-------------------
# ${myARCH}: Target Architecture
# ${myHOST}: Build Architecture
# ${myDEST}: Install location
# ${myXTRA}: Arch-specific flags to build glibc with
export myARCH=mips-unknown-linux-gnu
export myHOST=sparc-unknown-linux-gnu
export myDEST=/home/crossdev/mips
export myXTRA="-mips3 -mabi=32"
--- binutils ---
../configure \
--target=${myARCH} --host=${myHOST} \
--prefix=${myDEST} --enable-shared \
--enable-64-bit-bfd \
&& make && make install
--- kernel headers ---
cd ${myDEST}
cp -r /usr/include/* ${myDEST}/include/
rm -Rf ${myDEST}/include/linux
rm -Rf ${myDEST}/include/asm*
cp -r /usr/src/linux/include/linux ${myDEST}/include
cp -r /usr/src/linux/include/asm-$(echo ${myARCH} | cut -d- -f1)
${myDEST}/include
cp -r /usr/src/linux/include/asm-generic ${myDEST}/include
ln -s ${myDEST}/include/asm-$(echo ${myARCH} | cut -d- -f1)
${myDEST}/include/asm
--- gcc-bootstrap ---
../configure \
--prefix=${myDEST} --host=${myHOST} \
--target=${myARCH} --with-newlib \
--disable-shared --disable-threads \
--enable-languages=c --disable-multilib \
--without-headers \
&& make && make install
--- glibc ---
CC="${myARCH}-gcc" CFLAGS="-O2 ${myXTRA}" \
../configure \
--prefix=${myDEST} --host=${myARCH} \
--build=${myHOST} --without-tls \
--without-__thread \
--enable-add-ons=linuxthreads \
--enable-kernel=2.4.0 --with-gd=no \
--without-cvs --disable-profile \
--with-headers="${myDEST}/include" \
&& make && make install
--- gcc-full ---
../configure \
--prefix=${myDEST} --target=${myARCH} \
--host=${myHOST} --disable-multilib \
--enable-shared --enable-languages="c,c++,ada,f77,objc" \
--enable-nls --without-included-gettext \
--with-system-zlib --enable-threads=posix \
--enable-long-long --disable-checking \
--enable-cstdio=stdio \
--enable-clocale=generic \
--enable-__cxa_atexit \
--enable-version-specific-runtime-libs \
--with-local-prefix=${prefix}/local \
--with-libs="${myDEST}/lib" \
--with-headers="${myDEST}/${myARCH}/include" \
&& make && make install
--Kumba
--
"Such is oft the course of deeds that move the wheels of the world:
small hands do them because they must, while the eyes of the great are
elsewhere." --Elrond
next prev parent reply other threads:[~2004-01-18 5:34 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-17 7:11 Trouble compiling MIPS cross-compiler Adam Nielsen
2004-01-17 7:36 ` Adam Nielsen
2004-01-17 16:27 ` Thiemo Seufer
2004-01-17 16:35 ` Ralf Baechle
2004-01-17 16:33 ` Ralf Baechle
2004-01-18 1:19 ` Adam Nielsen
2004-01-18 1:54 ` Adam Nielsen
2004-01-18 3:46 ` Ralf Baechle
2004-01-18 4:14 ` Eric Christopher
2004-01-18 5:10 ` Adam Nielsen
2004-01-18 5:31 ` Eric Christopher
2004-01-18 5:36 ` Kumba [this message]
2004-01-18 6:46 ` Adam Nielsen
2004-01-18 6:56 ` Eric Christopher
2004-01-18 7:28 ` Thiemo Seufer
2004-01-18 7:35 ` Unscribe this maillist ??(zhufeng)
2004-01-18 7:35 ` ??(zhufeng)
2004-01-18 19:41 ` Trouble compiling MIPS cross-compiler Eric Christopher
2004-01-18 7:18 ` Kumba
2004-01-18 7:17 ` Eric Christopher
2004-01-18 8:04 ` Adam Nielsen
2004-01-18 8:13 ` Kumba
2004-01-18 10:05 ` Geert Uytterhoeven
2004-01-22 2:32 ` Solving the cross-compiler issue (Was: Trouble compiling MIPS cross-compiler) Nathan Field
2004-01-22 20:12 ` Daniel Jacobowitz
2004-01-22 20:32 ` Kumba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=400A1B5F.6010307@gentoo.org \
--to=kumba@gentoo.org \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.