Introduction to MIPSel
MIPSel is the little-endian (32-bit) variant of MIPS, used by early
systems, typically in embedded systems. Video game consoles of that
time often used PowerPC, MIPS 64, or MIPS 32 architectures. The
toolchain that will be built with the following instructions will
aim to target the latter.
The instructions will build a simple cross compiler for MIPSel
using Binutils and GCC. Both will be installed in this page. The
target is mipsel-linux-gnu, which is
shorter than a lot of other triplets.
Note
This may take a while to build. Feel free to do something else
while this is building.
Installation of MIPSel-Binutils
Install MIPSel-Binutils by running the following commands:
mkdir build-mipsel-binutils &&
cd build-mipsel-binutils &&
../configure --prefix=/usr \
--target=mipsel-linux-gnu \
--infodir=/usr/share/info/mipsel-linux-gnu \
--disable-nls \
--disable-werror \
--with-gold=no &&
make
Now, as the root user:
make DESTDIR=$PWD/DESTDIR install &&
rm -v DESTDIR/usr/lib/bfd-plugins/libdep.so &&
cp -Rv DESTDIR/usr/* /usr &&
rm -rf DESTDIR
Binutils Command Explanations
--disable-nls: This option
disables NLS support, disabling output diagnostics in languages
other than American English. Omit --disable-nls and invoke --enable-nls to enable NLS support.
--disable-werror: This
option makes it so warnings won't be considered errors.
--with-gold=no: This option
disables building gold, which is now considered deathware by many.
The tarball used for the installation includes gold due to
versioning issues, so this option helps counteract that.
--target=*: This option
builds files for the architecture passed to it.
rm -v
DESTDIR/usr/lib/bfd-plugins/libdep.so: This command
removes an library that conflicts with the original library
provided by the original compilation of
Binutils.
Installation of MIPSel-GCC
Install MIPSel-GCC by running the following commands:
mkdir build-mipsel-gcc &&
cd build-mipsel-gcc &&
../configure --prefix=/usr \
--target=mipsel-linux-gnu \
--disable-shared \
--disable-multilib \
--disable-threads \
--enable-languages=c,c++ &&
make inhibit_libc=true all-gcc
Now, as the root user:
make install-gcc &&
ln -sfv mipsel-linux-gnu-gcc /usr/bin/mipsel-linux-gnu-cc
GCC Command Explanations
--disable-shared: This
option disables building shared libraries.
--disable-multilib: This
option ensures that files are created specifically for MIPSel.
--disable-threads: This
option disables thread support due to building errors in GCC.
--enable-languages=c,c++:
This command builds support for C and C++. Refer to https://linuxfromscratch.org/blfs/view/systemd/general/gcc.html
to find what other languages are supported.
Contents
There are no binaries specific to MIPSel besides the format the
toolchain is targeting, and thus each binary is prefixed with the
architecture triplet, such as mipsel-linux-gnu-gcc. For
in-depth descriptions, read both
https://www.linuxfromscratch.org/lfs/view/systemd/chapter08/binutils.html#contents-binutils
and
https://www.linuxfromscratch.org/lfs/view/systemd/chapter08/gcc.html#contents-gcc.