iii. LFS Target Architectures

The primary target architectures of this LFS edition are the little endian MIPS64 release 2 to 5 CPUs (the release 6 is not backward-compatible with earlier releases). On the other hand, the instructions in this book are also known to work, with some modifications, for MIPS CPUs with a different byte order, word size, or ISA version. To build a system that utilizes one of these alternative CPUs, the main prerequisite, in addition to those on the next page, is an existing Linux system such as an earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or some other distribution that targets that architecture.

There are three widely-used ABIs for 64-bit MIPS programs. The o32 ABI is compatible with the ABI of the legacy 32-bit MIPS programs and it's used for running those legacy 32-bit programs on a 64-bit MIPS CPU. The n64 ABI is designed for taking the full advantage of 64-bit capability. The n32 ABI is similar to n64 but using 32-bit pointers, mainly used for 64-bit devices with a small amount of RAM. The default 64-bit build that results from LFS is a pure n64 system. That is, it supports n64 executables only. Building a multi-lib system requires compiling many applications multiple times, each time for an ABI to be supported. This is not directly supported in LFS because it would interfere with the educational objective of providing the minimal instructions needed for a basic Linux system. Some of the LFS/BLFS editors maintain a multilib fork of LFS, accessible at https://www.linuxfromscratch.org/~thomas/multilib/index.html. But it's for x86_64, and anyway multilib is an advanced topic.