
The basic components of theLinux family of operating systems, which are based on theLinux kernel, theGNU C Library,BusyBox or forks thereof likeμClinux anduClibc, have been programmed with a certain level of abstraction in mind. Also, there are distinct code paths in theassembly language orC source code which support certain hardware. Therefore, the source code can be successfully compiled on—or cross-compiled for—a great number ofcomputer architectures.
Furthermore, the requiredfree and open-source software has also been developed to interface between Linux and the hardware Linux is to be executed on. For example,compilers are available, e.g.GNU Compiler Collection (GCC) andLLVM/Clang. For cross-compilation a number of completetoolchains are available, likeGNU toolchain,OpenWrt (Buildroot), andOpenEmbedded. TheYocto Project is targeted at embedded use cases.
Theportability section of theLinux kernel article contains information and references to technical details.
Note that further components like awindowing system, or programs likeBlender, can be present or absent. Fundamentally any software has to be ported, i.e. specifically adapted, to any kind of hardware it is supposed to be executed on. The level of abstraction that has been kept in mind while programming that software in the first place dictates the necessary effort.
The relevant term is of the porting target iscomputer architecture; it comprises theinstruction set(s) and themicroarchitecture(s) of theprocessor(s), at least of theCPU. The target also comprises the "system design" of the entire system, be it asupercomputer, adesktop computer or someSoC, e.g. in case some uniquebus is being used. In former times, thememory controller was part of thechipset on themotherboard and not on the CPU-die.
Although the support of a specific instruction set is the task of the compiler, the software must be written with a certain level of abstraction in mind to make this portability possible. Any code written in Assembly language will be specific to the instruction set.
The support of a specific microarchitecture includes optimizations for theCPU cache hierarchy, theTLB, etc.
This section mayrequirecleanup to meet Wikipedia'squality standards. The specific problem is:Links instead of proper references, formatting. Please helpimprove this section if you can.(April 2018) (Learn how and when to remove this message) |
alpha)arc)arm andarm64):csky)[4]hexagon)loongarch32)loongarch64)m68k):microblaze)mips):nios2openrisc)parisc)powerpc):riscv)s390x)sh)sparc)x86):xtensa)Additional processors (particularly Freescale's 68000 andColdFire) are supported by the MMU-lessμClinux variant.
h8300)nds32)[13]blackfin)frv)score)m32r)mn10300)s390)