All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Brad Barrett" <brad@patton.com>
To: "Chien-Lung Wu" <cwu@deltartp.com>, <linux-mips@linux-mips.org>
Subject: RE: Help in cross-compiler
Date: Wed, 18 Dec 2002 12:33:30 -0500	[thread overview]
Message-ID: <BBEBJGNKIDPPHNAJKDFHGEKLCFAA.brad@patton.com> (raw)
In-Reply-To: <A4E787A2467EF849B00585F14C9005590689B4@dprn03.deltartp.com>

On Wednesday 18 December 2002 10:57 am, you wrote:

> I am working on the embedded linux system on bug endian mips (mips-linux).
> As I understand, I need to get the cross-compiler work on my linux-i686
> host (redhat 7.2).
> Following the Bradly's "Building a modern MIPS cross-toolchain for linux",
>  I download following packages:
>
> 	binutils-2.11
> 	gcc-2.95
> 	glibc-2.2.5
> 	glibc-linuxthreads-2.2.5
>
> And following the procedue:
...
> However, I got the error_message:
...
> /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys
>- include/bits/mathinline.h:426:
>       unknown register name `st(1)' in `asm'
...
> Does any have any idea to fix this error?

It sounds like you used the standard binutils.  You should probably use H.J.
Lu's binutils (they have some MIPS patches applied), and also his gcc (same
story).  They're available at:

http://ftp.kernel.org/pub/linux/devel/binutils/
ftp://ftp.linux-mips.org/pub/linux/mips/redhat/7.3/test/

> When I build the C cross-compiler, I use the "dubious hack"
> --with-headers=/usr/include copy the "MIPS host header files". Are there
> any other ways to copy the MIPS-host headers?

I never understood why anyone would use this method.  If you're building a
mips-linux cross-compiler, you should have a copy of the Linux kernel source
from linux-mips.org lying around somewhere (or are you using a pre-compiled
kernel image?).  Just copy the include directory from this source to a
convenient location, symbolically link asm to asm-mips and point the gcc
configure to it.


I've included below my personal build notes from a mipsel (little-endian)
cross-toolchain I built a couple months ago.  Hopefully these will be helpful.
Note that I chose /opt/toolchains/mips for the installed path, rather than
/usr/local.  My build system was SuSE 7.2 (gcc version 2.95.3 20010315 (SuSE)
and binutils version 2.10.91).

Also, you don't mention applying the glibc-2.2.5-mips-build-gmon.diff patch that
Brad LaRonde recommends.  If you didn't apply this patch, you might also want to
do that.

Brad

----------------Build Notes------------------------------------

I relied primarily on Steven J. Hill's build script [SJH], but with several
adjustments.

H.J. Lu says only his binutils will work:
http://ftp.kernel.org/pub/linux/devel/binutils/
I got the latest version.

H.J. Lu also says to use his gcc 3.2.  This is available only in source rpm
format, at:
ftp://ftp.linux-mips.org/pub/linux/mips/redhat/7.3/test/

Glibc came from the standard location:
ftp://ftp.gnu.org/gnu/glibc/
*Except*...patched with "glibc-2.2.5-mips-build-gmon.diff" from [BDL2.4].
This source also recommends the "-finline-limit=10000" CFLAG value (claims
ld.so won't work without it, and this seems to be true).

Tool versions:
Binutils             v2.13.90.0.10 (H.J. Lu)
GCC                  v3.2 (H.J. Lu)
Glibc                v2.2.5
Glibc-linuxthreads   v2.2.5

Patch:
glibc-2.2.5-mips-build-gmon.diff
  (http://www.ltc.com/~brad/mips/glibc-2.2.5-mips-build-gmon.diff)

-------------------------
Build Log
-------------------------
[Implied "su" to root prior to each "make install" below.]

1. Downloaded tarballs/rpms and unpacked to:
               ~/mipsel-cross/binutils-2.13
               ~/mipsel-cross/gcc-3.2
               ~/mipsel-cross/glibc-2.2.5
               (linuxthreads is unpacked into the glibc-2.2.5 directory)

2. Binutils:
  cd ~/mipsel-cross/binutils-2.13/mips
  chmod 744 README
  cd ..
  ./mips/README  (apply HJ Lu's patches)
  mkdir ~/mipsel-cross/mipsel-binutils
  cd ~/mipsel-cross/mipsel-binutils
  ../binutils-2.13/configure --prefix=/opt/toolchains/mips \
      --enable-targets=mips64el-linux,mipsel-linux --target=mipsel-linux \
      --enable-shared
  make
  make install

3. Gcc (1st time)
  cp -R ~/linux-2.4/include/asm-mips /opt/toolchains/mips/mipsel-linux/include
  cp -R ~/linux-2.4/include/linux    /opt/toolchains/mips/mipsel-linux/include
  cd /opt/toolchains/mips/mipsel-linux/include
  ln -s asm-mips asm
  mkdir ~/mipsel-cross/mipsel-gcc
  cd ~/mipsel-cross/mipsel-gcc
  AR=mipsel-linux-ar  RANLIB=mipsel-linux-ranlib  ../gcc-3.2/configure  \
      --prefix=/opt/toolchains/mips  --with-newlib  --enable-languages=c  \
      --target=mipsel-linux  --disable-shared  --disable-threads
  make
  make install

4. Glibc
  cd ~/mipsel-cross/glibc-2.2.5
  patch -p1 -i ../glibc-2.2.5-mips-build-gmon.diff
    (patch asked for name of each file to patch...had to type them in)
  mkdir ~/mipsel-cross/mipsel-glibc
  cd ~/mipsel-cross/mipsel-glibc
  CFLAGS="-O2 -g -finline-limit=10000"  LD_LIBRARY_PATH=  \
  BUILD_CC=gcc  CC=mipsel-linux-gcc  AR=mipsel-linux-ar  AS=mipsel-linux-as  \
      RANLIB=mipsel-linux-ranlib  ../glibc-2.2.5/configure  \
      --prefix=/opt/toolchains/mips/mipsel-linux  --host=mipsel-linux  \
      --build=i686-pc-linux-gnu  --enable-add-ons  --with-elf  \
      --disable-profile  \
      --with-headers=/opt/toolchains/mips/mipsel-linux/include  \
      --mandir=/opt/toolchains/mips/man  --infodir=/opt/toolchains/mips/info  \
      --enable-kernel=2.4.0
  make
  make install

5. Gcc (2nd time - with full glibc support)
  mkdir ~/mipsel-cross/mipsel-gccfull
  cd ~/mipsel-cross/mipsel-gccfull
  AR=mipsel-linux-ar  RANLIB=mipsel-linux-ranlib  ../gcc-3.2/configure  \
      --prefix=/opt/toolchains/mips  --enable-languages=c,c++  \
      --target=mipsel-linux  --enable-shared  --enable-threads  \
      --includedir=/opt/toolchains/mips/mipsel-linux/include  \
      --with-gxx-include-dir=/opt/toolchains/mips/mipsel-linux/include  \
      --mandir=/opt/toolchains/mips/man  --infodir=/opt/toolchains/mips/info  \
      --disable-checking
  make
  make install




Sources:
--------
[BDL2.4]   LaRonde, Bradley D., "Building a Modern MIPS Cross-Toolchain for
           Linux", v2.4, 2002-09-25,
           http://www.ltc.com/~brad/mips/mips-cross-toolchain.html

[SJH]
ftp://ftp.cotw.com/Linux/MIPS/toolchain/stable/sources/mipsel-linux-toolchain-bu
ild.sh

----------------End Build Notes--------------------------------


--
Brad Barrett
Staff Engineer, Patton Electronics
brad@patton.com

WARNING: multiple messages have this Message-ID (diff)
From: "Brad Barrett" <brad@patton.com>
To: Chien-Lung Wu <cwu@deltartp.com>, linux-mips@linux-mips.org
Subject: RE: Help in cross-compiler
Date: Wed, 18 Dec 2002 12:33:30 -0500	[thread overview]
Message-ID: <BBEBJGNKIDPPHNAJKDFHGEKLCFAA.brad@patton.com> (raw)
Message-ID: <20021218173330.tSIrICU-8RRJKqO9DiOjholtStGWEaC890GSQ0D9Pwg@z> (raw)
In-Reply-To: <A4E787A2467EF849B00585F14C9005590689B4@dprn03.deltartp.com>

On Wednesday 18 December 2002 10:57 am, you wrote:

> I am working on the embedded linux system on bug endian mips (mips-linux).
> As I understand, I need to get the cross-compiler work on my linux-i686
> host (redhat 7.2).
> Following the Bradly's "Building a modern MIPS cross-toolchain for linux",
>  I download following packages:
>
> 	binutils-2.11
> 	gcc-2.95
> 	glibc-2.2.5
> 	glibc-linuxthreads-2.2.5
>
> And following the procedue:
...
> However, I got the error_message:
...
> /usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys
>- include/bits/mathinline.h:426:
>       unknown register name `st(1)' in `asm'
...
> Does any have any idea to fix this error?

It sounds like you used the standard binutils.  You should probably use H.J.
Lu's binutils (they have some MIPS patches applied), and also his gcc (same
story).  They're available at:

http://ftp.kernel.org/pub/linux/devel/binutils/
ftp://ftp.linux-mips.org/pub/linux/mips/redhat/7.3/test/

> When I build the C cross-compiler, I use the "dubious hack"
> --with-headers=/usr/include copy the "MIPS host header files". Are there
> any other ways to copy the MIPS-host headers?

I never understood why anyone would use this method.  If you're building a
mips-linux cross-compiler, you should have a copy of the Linux kernel source
from linux-mips.org lying around somewhere (or are you using a pre-compiled
kernel image?).  Just copy the include directory from this source to a
convenient location, symbolically link asm to asm-mips and point the gcc
configure to it.


I've included below my personal build notes from a mipsel (little-endian)
cross-toolchain I built a couple months ago.  Hopefully these will be helpful.
Note that I chose /opt/toolchains/mips for the installed path, rather than
/usr/local.  My build system was SuSE 7.2 (gcc version 2.95.3 20010315 (SuSE)
and binutils version 2.10.91).

Also, you don't mention applying the glibc-2.2.5-mips-build-gmon.diff patch that
Brad LaRonde recommends.  If you didn't apply this patch, you might also want to
do that.

Brad

----------------Build Notes------------------------------------

I relied primarily on Steven J. Hill's build script [SJH], but with several
adjustments.

H.J. Lu says only his binutils will work:
http://ftp.kernel.org/pub/linux/devel/binutils/
I got the latest version.

H.J. Lu also says to use his gcc 3.2.  This is available only in source rpm
format, at:
ftp://ftp.linux-mips.org/pub/linux/mips/redhat/7.3/test/

Glibc came from the standard location:
ftp://ftp.gnu.org/gnu/glibc/
*Except*...patched with "glibc-2.2.5-mips-build-gmon.diff" from [BDL2.4].
This source also recommends the "-finline-limit=10000" CFLAG value (claims
ld.so won't work without it, and this seems to be true).

Tool versions:
Binutils             v2.13.90.0.10 (H.J. Lu)
GCC                  v3.2 (H.J. Lu)
Glibc                v2.2.5
Glibc-linuxthreads   v2.2.5

Patch:
glibc-2.2.5-mips-build-gmon.diff
  (http://www.ltc.com/~brad/mips/glibc-2.2.5-mips-build-gmon.diff)

-------------------------
Build Log
-------------------------
[Implied "su" to root prior to each "make install" below.]

1. Downloaded tarballs/rpms and unpacked to:
               ~/mipsel-cross/binutils-2.13
               ~/mipsel-cross/gcc-3.2
               ~/mipsel-cross/glibc-2.2.5
               (linuxthreads is unpacked into the glibc-2.2.5 directory)

2. Binutils:
  cd ~/mipsel-cross/binutils-2.13/mips
  chmod 744 README
  cd ..
  ./mips/README  (apply HJ Lu's patches)
  mkdir ~/mipsel-cross/mipsel-binutils
  cd ~/mipsel-cross/mipsel-binutils
  ../binutils-2.13/configure --prefix=/opt/toolchains/mips \
      --enable-targets=mips64el-linux,mipsel-linux --target=mipsel-linux \
      --enable-shared
  make
  make install

3. Gcc (1st time)
  cp -R ~/linux-2.4/include/asm-mips /opt/toolchains/mips/mipsel-linux/include
  cp -R ~/linux-2.4/include/linux    /opt/toolchains/mips/mipsel-linux/include
  cd /opt/toolchains/mips/mipsel-linux/include
  ln -s asm-mips asm
  mkdir ~/mipsel-cross/mipsel-gcc
  cd ~/mipsel-cross/mipsel-gcc
  AR=mipsel-linux-ar  RANLIB=mipsel-linux-ranlib  ../gcc-3.2/configure  \
      --prefix=/opt/toolchains/mips  --with-newlib  --enable-languages=c  \
      --target=mipsel-linux  --disable-shared  --disable-threads
  make
  make install

4. Glibc
  cd ~/mipsel-cross/glibc-2.2.5
  patch -p1 -i ../glibc-2.2.5-mips-build-gmon.diff
    (patch asked for name of each file to patch...had to type them in)
  mkdir ~/mipsel-cross/mipsel-glibc
  cd ~/mipsel-cross/mipsel-glibc
  CFLAGS="-O2 -g -finline-limit=10000"  LD_LIBRARY_PATH=  \
  BUILD_CC=gcc  CC=mipsel-linux-gcc  AR=mipsel-linux-ar  AS=mipsel-linux-as  \
      RANLIB=mipsel-linux-ranlib  ../glibc-2.2.5/configure  \
      --prefix=/opt/toolchains/mips/mipsel-linux  --host=mipsel-linux  \
      --build=i686-pc-linux-gnu  --enable-add-ons  --with-elf  \
      --disable-profile  \
      --with-headers=/opt/toolchains/mips/mipsel-linux/include  \
      --mandir=/opt/toolchains/mips/man  --infodir=/opt/toolchains/mips/info  \
      --enable-kernel=2.4.0
  make
  make install

5. Gcc (2nd time - with full glibc support)
  mkdir ~/mipsel-cross/mipsel-gccfull
  cd ~/mipsel-cross/mipsel-gccfull
  AR=mipsel-linux-ar  RANLIB=mipsel-linux-ranlib  ../gcc-3.2/configure  \
      --prefix=/opt/toolchains/mips  --enable-languages=c,c++  \
      --target=mipsel-linux  --enable-shared  --enable-threads  \
      --includedir=/opt/toolchains/mips/mipsel-linux/include  \
      --with-gxx-include-dir=/opt/toolchains/mips/mipsel-linux/include  \
      --mandir=/opt/toolchains/mips/man  --infodir=/opt/toolchains/mips/info  \
      --disable-checking
  make
  make install




Sources:
--------
[BDL2.4]   LaRonde, Bradley D., "Building a Modern MIPS Cross-Toolchain for
           Linux", v2.4, 2002-09-25,
           http://www.ltc.com/~brad/mips/mips-cross-toolchain.html

[SJH]
ftp://ftp.cotw.com/Linux/MIPS/toolchain/stable/sources/mipsel-linux-toolchain-bu
ild.sh

----------------End Build Notes--------------------------------


--
Brad Barrett
Staff Engineer, Patton Electronics
brad@patton.com

  reply	other threads:[~2002-12-18 17:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-18 15:57 Help in cross-compiler Chien-Lung Wu
2002-12-18 17:33 ` Brad Barrett [this message]
2002-12-18 17:33   ` Brad Barrett
2002-12-19  1:52 ` ??
2002-12-19  1:52   ` ??

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=BBEBJGNKIDPPHNAJKDFHGEKLCFAA.brad@patton.com \
    --to=brad@patton.com \
    --cc=cwu@deltartp.com \
    --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.