Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| docs:guide-developer:toolchain:buildsystem_essentials [2023/03/03 20:17] – [Directory structure] tools stintel | docs:guide-developer:toolchain:buildsystem_essentials [2024/02/26 08:23] (current) – [Description] grammar issue juyongchun | ||
|---|---|---|---|
| Line 21: | Line 21: | ||
| The **build system** is a set of [[wp> | The **build system** is a set of [[wp> | ||
| A typical toolchain consists of: | A typical toolchain consists of: | ||
| - | * a compiler, such as [[wp>GNU Compiler Collection|gcc]] | + | * A compiler, such as [[wp>GNU Compiler Collection|gcc]] |
| - | * binary | + | * Binary |
| - | * a [[wp>C standard library]], such as glibc, musl, uClibc or dietlibc | + | * A [[wp>C standard library]], such as glibc, musl, uClibc or dietlibc |
| Usually a toolchain generates code for the same instruction set architecture (ISA) that it runs on ([[wp> | Usually a toolchain generates code for the same instruction set architecture (ISA) that it runs on ([[wp> | ||
| Line 37: | Line 37: | ||
| The process of creating a cross compiler can be tricky. | The process of creating a cross compiler can be tricky. | ||
| - | It's not something that's regularly attempted and so the there' | + | It's not something that's regularly attempted and so there' |
| When you're dealing with embedded devices you'll often be provided with a binary copy of a compiler and basic libraries rather than instructions for creating your own - it's a time saving step but at the same time often means you'll be using a rather dated set of tools. | When you're dealing with embedded devices you'll often be provided with a binary copy of a compiler and basic libraries rather than instructions for creating your own - it's a time saving step but at the same time often means you'll be using a rather dated set of tools. | ||
| It's also common to be provided with a patched copy of the Linux kernel from the board or chip vendor, but this is also dated and it can be difficult to spot exactly what has been changed to make the kernel run on the embedded platform. | It's also common to be provided with a patched copy of the Linux kernel from the board or chip vendor, but this is also dated and it can be difficult to spot exactly what has been changed to make the kernel run on the embedded platform. | ||
| Line 103: | Line 103: | ||
| ===== Patch management ===== | ===== Patch management ===== | ||
| * Many packages will not work as-is and need patches to work on the target or to even compile | * Many packages will not work as-is and need patches to work on the target or to even compile | ||
| - | * the build system integrates [[wp> | + | * The build system integrates [[wp> |
| * Turn package patches into quilt series: '' | * Turn package patches into quilt series: '' | ||
| * Update patches from modified series: '' | * Update patches from modified series: '' | ||
| Line 111: | Line 111: | ||
| * Main objective is small memory and size footprint | * Main objective is small memory and size footprint | ||
| * Features that make no sense on embedded systems are disabled through configure or patched out | * Features that make no sense on embedded systems are disabled through configure or patched out | ||
| - | * Packages must be compilable | + | * Packages must be compatible |
| * Shipped " | * Shipped " | ||
| * Build variants and kconfig includes allow for configurable compile-time settings | * Build variants and kconfig includes allow for configurable compile-time settings | ||