aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--part3intro/toolchaintechnotes.xml31
1 files changed, 22 insertions, 9 deletions
diff --git a/part3intro/toolchaintechnotes.xml b/part3intro/toolchaintechnotes.xml
index 49656d052..7a8058424 100644
--- a/part3intro/toolchaintechnotes.xml
+++ b/part3intro/toolchaintechnotes.xml
@@ -145,15 +145,28 @@
<title>Implementation of Cross-Compilation for LFS</title>
<note>
- <para>Almost all the build systems use names of the form
- cpu-vendor-kernel-os, referred to as the machine triplet. (Sometimes,
- the vendor field is omitted.) An astute
- reader may wonder why a <quote>triplet</quote> refers to a four component
- name. The reason is historical: initially, three component names were enough
- to designate a machine unambiguously, but as new machines and systems
- proliferated, that proved insufficient. The word <quote>triplet</quote>
- remained. A simple way to determine your machine triplet is to run
- the <command>config.guess</command>
+ <para>All packages involved with cross compilation in the book use an
+ autoconf-based building system. The autoconf-based building system
+ accepts system types in the form cpu-vendor-kernel-os,
+ referred to as the system triplet. Since the vendor field is mostly
+ irrelevant, autoconf allows to omit it. An astute reader may wonder
+ why a <quote>triplet</quote> refers to a four component name. The
+ reason is the kernel field and the os field originiated from one
+ <quote>system</quote> field. Such a three-field form is still valid
+ today for some systems, for example
+ <literal>x86_64-unknown-freebsd</literal>. But for other systems,
+ two systems can share the same kernel but still be too different to
+ use a same triplet for them. For example, an Android running on a
+ mobile phone is completely different from Ubuntu running on an ARM64
+ server. Without an emulation layer, you cannot run an executable for
+ the server on the mobile phone or vice versa. So the
+ <quote>system</quote> field is separated into kernel and os fields to
+ designate these systems unambiguously. For our example, the Android
+ system is designated <literal>aarch64-unknown-linux-android</literal>,
+ and the Ubuntu system is designated
+ <literal>aarch64-unknown-linux-gnu</literal>. The word
+ <quote>triplet</quote> remained. A simple way to determine your
+ system triplet is to run the <command>config.guess</command>
script that comes with the source for many packages. Unpack the binutils
sources and run the script: <userinput>./config.guess</userinput> and note
the output. For example, for a 32-bit Intel processor the