From 22422a8a13083ea8efc196dc410cfac0f498856c Mon Sep 17 00:00:00 2001 From: Pierre Labastie Date: Mon, 8 Jun 2020 08:12:16 +0000 Subject: Remove unneeded files in chapter 6, and fix href' in chapter 7 git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/cross2@11901 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- chapter06/binutils-pass1.xml | 156 ------------------ chapter06/bison.xml | 82 ---------- chapter06/bzip2.xml | 112 ------------- chapter06/chroot.xml | 65 -------- chapter06/createfiles.xml | 204 ----------------------- chapter06/creatingdirs.xml | 59 ------- chapter06/dejagnu.xml | 96 ----------- chapter06/expect.xml | 139 ---------------- chapter06/flex.xml | 88 ---------- chapter06/gcc-pass1.xml | 208 ----------------------- chapter06/generalinstructions.xml | 120 -------------- chapter06/gettext.xml | 85 ---------- chapter06/glibc.xml | 230 -------------------------- chapter06/kernfs.xml | 115 ------------- chapter06/libstdc++-pass2.xml | 114 ------------- chapter06/libstdc++.xml | 122 -------------- chapter06/linux-headers.xml | 207 ----------------------- chapter06/perl.xml | 79 --------- chapter06/python.xml | 88 ---------- chapter06/tcl.xml | 191 ---------------------- chapter06/texinfo.xml | 74 --------- chapter06/toolchaintechnotes.xml | 335 -------------------------------------- chapter06/util-linux.xml | 113 ------------- 23 files changed, 3082 deletions(-) delete mode 100644 chapter06/binutils-pass1.xml delete mode 100644 chapter06/bison.xml delete mode 100644 chapter06/bzip2.xml delete mode 100644 chapter06/chroot.xml delete mode 100644 chapter06/createfiles.xml delete mode 100644 chapter06/creatingdirs.xml delete mode 100644 chapter06/dejagnu.xml delete mode 100644 chapter06/expect.xml delete mode 100644 chapter06/flex.xml delete mode 100644 chapter06/gcc-pass1.xml delete mode 100644 chapter06/generalinstructions.xml delete mode 100644 chapter06/gettext.xml delete mode 100644 chapter06/glibc.xml delete mode 100644 chapter06/kernfs.xml delete mode 100644 chapter06/libstdc++-pass2.xml delete mode 100644 chapter06/libstdc++.xml delete mode 100644 chapter06/linux-headers.xml delete mode 100644 chapter06/perl.xml delete mode 100644 chapter06/python.xml delete mode 100644 chapter06/tcl.xml delete mode 100644 chapter06/texinfo.xml delete mode 100644 chapter06/toolchaintechnotes.xml delete mode 100644 chapter06/util-linux.xml (limited to 'chapter06') diff --git a/chapter06/binutils-pass1.xml b/chapter06/binutils-pass1.xml deleted file mode 100644 index 8658cfcfe..000000000 --- a/chapter06/binutils-pass1.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - %general-entities; -]> - - - - - - binutils-pass1 - &binutils-version; -
&binutils-url;
-
- - Binutils-&binutils-version; - Pass 1 - - - Binutils - tools, pass 1 - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/binutils.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&binutils-ch5p1-sbu;</seg> - <seg>&binutils-ch5p1-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Cross Binutils - - Go back and re-read the notes in the previous section. - Understanding the notes labeled important will save you a lot - of problems later. - - It is important that Binutils be the first package compiled - because both Glibc and GCC perform various tests on the available - linker and assembler to determine which of their own features to - enable. - - The Binutils documentation recommends building Binutils - in a dedicated build directory: - -mkdir -v build -cd build - - - In order for the SBU values listed in the rest of the book - to be of any use, measure the time it takes to build this package from - the configuration, up to and including the first install. To achieve - this easily, wrap the commands in a time - command like this: time { ./configure ... && ... - && make install; }. - - - Now prepare Binutils for compilation: - -../configure --prefix=$LFS/tools \ - --with-sysroot=$LFS \ - --target=$LFS_TGT \ - --disable-nls \ - --disable-werror - - - The meaning of the configure options: - - - --prefix=$LFS/tools - - This tells the configure script to prepare to install the - Binutils programs in the $LFS/tools directory. - - - - - --with-sysroot=$LFS - - For cross compilation, this tells the build system to look in - $LFS for the target system libraries as needed. - - - - - --target=$LFS_TGT - - Because the machine description in the LFS_TGT - variable is slightly different than the value returned by the - config.guess script, this switch will tell the - configure script to adjust Binutil's build system - for building a cross linker. - - - - - --disable-nls - - This disables internationalization as i18n is not needed for the - temporary tools. - - - - - --disable-werror - - This prevents the build from stopping in the event that there - are warnings from the host's compiler. - - - - - - Continue with compiling the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-binutils" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/bison.xml b/chapter06/bison.xml deleted file mode 100644 index afe84a403..000000000 --- a/chapter06/bison.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-bison" role="wrap"> - <?dbhtml filename="bison.html"?> - - <sect1info condition="script"> - <productname>bison</productname> - <productnumber>&bison-version;</productnumber> - <address>&bison-url;</address> - </sect1info> - - <title>Bison-&bison-version; - - - Bison - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter08/bison.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&bison-ch5-sbu;</seg> - <seg>&bison-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Bison - - Prepare Bison for compilation: - -./configure --prefix=/usr \ - --docdir=/usr/share/doc/bison-&bison-version; - - - The meaning of the new configure option: - - - --docdir=/usr/share/doc/bison-&bison-version; - - This tells the build system to install bison documentation - into a versioned directory. - - - - - - Compile the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-bison" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/bzip2.xml b/chapter06/bzip2.xml deleted file mode 100644 index 828b7fc0f..000000000 --- a/chapter06/bzip2.xml +++ /dev/null @@ -1,112 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-bzip2" role="wrap"> - <?dbhtml filename="bzip2.html"?> - - <sect1info condition="script"> - <productname>bzip2</productname> - <productnumber>&bzip2-version;</productnumber> - <address>&bzip2-url;</address> - </sect1info> - - <title>Bzip2-&bzip2-version; - - - Bzip2 - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/bzip2.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&bzip2-ch5-sbu;</seg> - <seg>&bzip2-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Bzip2 - - Apply a patch that will install the documentation for this - package: - -patch -Np1 -i ../&bzip2-docs-patch; - - The following command ensures installation of symbolic links are - relative: - -sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile - - Ensure the man pages are installed into the correct location: - -sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile - - The Bzip2 package does not contain a configure - script. There are two Makefile, one for the shared - library, and the other for the static library. Since we need both, We - do the compilation in two stages. First the shared library: - -make CC=$LFS_TGT-gcc -f Makefile-libbz2_so -make clean - - - The meaning of the make parameter: - - - -f Makefile-libbz2_so - - This will cause Bzip2 to be built using a different - Makefile file, in this case the - Makefile-libbz2_so file, which creates a dynamic - libbz2.so library and links - the Bzip2 utilities against it. - - - - - - Compile and test the package with: - -make CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib - - Install the package: - -make PREFIX=$LFS/usr install - - Install the shared bzip2 binary into the - /bin directory, make some necessary - symbolic links, and clean up: - -cp -v bzip2-shared $LFS/bin/bzip2 -cp -av libbz2.so* $LFS/lib -ln -sv ../../lib/libbz2.so.1.0 $LFS/usr/lib/libbz2.so -rm -v $LFS/usr/bin/{bunzip2,bzcat,bzip2} -ln -sv bzip2 $LFS/bin/bunzip2 -ln -sv bzip2 $LFS/bin/bzcat - - - - - - <para>Details on this package are located in - <xref linkend="contents-bzip2" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/chroot.xml b/chapter06/chroot.xml deleted file mode 100644 index 5b6310af7..000000000 --- a/chapter06/chroot.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-chroot"> - <?dbhtml filename="chroot.html"?> - - <title>Entering the Chroot Environment - - Now that all the packages which depend on themselves for being built - are on the system, it is time to enter the chroot environment to finish - installing the remaining temporary tools. This environment will be in use - also for installing the final system. As user root, run the following command to enter the - realm that is, at the moment, populated with only the temporary tools: - -chroot "$LFS" /usr/bin/env -i \ - HOME=/root \ - TERM="$TERM" \ - PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/bin:/usr/bin:/sbin:/usr/sbin \ - /bin/bash --login +h - - The -i option given to the env - command will clear all variables of the chroot environment. After that, only - the HOME, TERM, PS1, and - PATH variables are set again. The - TERM=$TERM construct will set the TERM - variable inside chroot to the same value as outside chroot. This variable is - needed for programs like vim and less - to operate properly. If other variables are needed, such as - CFLAGS or CXXFLAGS, this is a good place to set - them again. - - From this point on, there is no need to use the - LFS variable anymore, because all work will be restricted - to the LFS file system. This is because the Bash shell is told that - $LFS is now the root - (/) directory. - - Notice that /tools/bin is not - anymore in the PATH. This means that a temporary tool will no longer be - used once its final version is installed. This occurs when the shell does not - remember the locations of executed binaries—for this - reason, hashing is switched off by passing the +h option - to bash. - - Note that the bash prompt will say - I have no name! This is normal because the - /etc/passwd file has not been created yet. - - - It is important that all the commands throughout the remainder of this - chapter and the following chapters are run from within the chroot - environment. If you leave this environment for any reason (rebooting for - example), ensure that the virtual kernel filesystems are mounted as - explained in and and enter chroot again before continuing - with the installation. - - -
diff --git a/chapter06/createfiles.xml b/chapter06/createfiles.xml deleted file mode 100644 index aed8d79da..000000000 --- a/chapter06/createfiles.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - %general-entities; -]> - - - - - Creating Essential Files and Symlinks - - - /etc/passwd - - - - /etc/group - - - - /var/run/utmp - - - - /var/log/btmp - - - - /var/log/lastlog - - - - /var/log/wtmp - - - Historically, Linux maintains a list of the mounted file systems in the - file /etc/mtab. Modern kernels maintain this list - internally and exposes it to the user via the /proc filesystem. To satisfy utilities that - expect the presence of /etc/mtab, create the following - symbolic link: - -ln -sv /proc/self/mounts /etc/mtab - - In order for user root to be - able to login and for the name root to be recognized, there - must be relevant entries in the /etc/passwd and - /etc/group files. - - Create the /etc/passwd file by running the following - command: - -cat > /etc/passwd << "EOF" -root:x:0:0:root:/root:/bin/bash -bin:x:1:1:bin:/dev/null:/bin/false -daemon:x:6:6:Daemon User:/dev/null:/bin/false -messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false -nobody:x:99:99:Unprivileged User:/dev/null:/bin/false -EOF - -cat > /etc/passwd << "EOF" -root:x:0:0:root:/root:/bin/bash -bin:x:1:1:bin:/dev/null:/bin/false -daemon:x:6:6:Daemon User:/dev/null:/bin/false -messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false -systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false -systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false -systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false -systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false -systemd-network:x:76:76:systemd Network Management:/:/bin/false -systemd-resolve:x:77:77:systemd Resolver:/:/bin/false -systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false -systemd-coredump:x:79:79:systemd Core Dumper:/:/bin/false -nobody:x:99:99:Unprivileged User:/dev/null:/bin/false -EOF - - The actual password for root - (the x used here is just a placeholder) will be set later. - - Create the /etc/group file by running the following - command: - -cat > /etc/group << "EOF" -root:x:0: -bin:x:1:daemon -sys:x:2: -kmem:x:3: -tape:x:4: -tty:x:5: -daemon:x:6: -floppy:x:7: -disk:x:8: -lp:x:9: -dialout:x:10: -audio:x:11: -video:x:12: -utmp:x:13: -usb:x:14: -cdrom:x:15: -adm:x:16: -messagebus:x:18: -input:x:24: -mail:x:34: -kvm:x:61: -wheel:x:97: -nogroup:x:99: -users:x:999: -EOF - -cat > /etc/group << "EOF" -root:x:0: -bin:x:1:daemon -sys:x:2: -kmem:x:3: -tape:x:4: -tty:x:5: -daemon:x:6: -floppy:x:7: -disk:x:8: -lp:x:9: -dialout:x:10: -audio:x:11: -video:x:12: -utmp:x:13: -usb:x:14: -cdrom:x:15: -adm:x:16: -messagebus:x:18: -systemd-journal:x:23: -input:x:24: -mail:x:34: -kvm:x:61: -systemd-bus-proxy:x:72: -systemd-journal-gateway:x:73: -systemd-journal-remote:x:74: -systemd-journal-upload:x:75: -systemd-network:x:76: -systemd-resolve:x:77: -systemd-timesync:x:78: -systemd-coredump:x:79: -wheel:x:97: -nogroup:x:99: -users:x:999: -EOF - - The created groups are not part of any standard—they are groups - decided on in part by the requirements of the Udev configuration in the next - chapter, and in part by common convention employed by a number of existing - Linux distributions. In addition, some test suites rely on specific users - or groups. The Linux Standard Base (LSB, available at ) recommends only that, besides the group - root with a Group ID (GID) of 0, - a group bin with a GID of 1 be - present. All other group names and GIDs can be chosen freely by the system - administrator since well-written programs do not depend on GID numbers, but - rather use the group's name. - - Some tests in need a regular - user. We add this user here and delete this account at the end of that - chapter. - -echo "tester:x:$(ls -n $(tty) | cut -d" " -f3):101::/home/tester:/bin/bash" >> /etc/passwd -echo "tester:x:101:" >> /etc/group -install -o tester -d /home/tester - - To remove the I have no name! prompt, start a new - shell. Since the - /etc/passwd and /etc/group - files have been created, user name and group name resolution will now - work: - -exec /bin/bash --login +h - - Note the use of the +h directive. This tells - bash not to use its internal path hashing. Without this - directive, bash would remember the paths to binaries it has - executed. To ensure the use of the newly compiled binaries as soon as they are - installed, the +h directive will be used for the duration - of this chapter. - - The login, agetty, and - init programs (and others) use a number of log - files to record information such as who was logged into the system and - when. However, these programs will not write to the log files if they - do not already exist. Initialize the log files and give them - proper permissions: - -touch /var/log/{btmp,lastlog,faillog,wtmp} -chgrp -v utmp /var/log/lastlog -chmod -v 664 /var/log/lastlog -chmod -v 600 /var/log/btmp - - The /var/log/wtmp file records all logins and - logouts. The /var/log/lastlog file records when each - user last logged in. The /var/log/faillog file records - failed login attempts. The /var/log/btmp file records - the bad login attempts. - - The /run/utmp file records the users that - are currently logged in. This file is created dynamically in the boot - scripts. - - diff --git a/chapter06/creatingdirs.xml b/chapter06/creatingdirs.xml deleted file mode 100644 index 359717ff7..000000000 --- a/chapter06/creatingdirs.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - %general-entities; -]> - - - - - Creating Directories - - It is time to create the full structure in the LFS file system. Create - a standard directory tree by issuing the following commands: - -mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt} -mkdir -pv /{media/{floppy,cdrom},srv,var} -install -dv -m 0750 /root -install -dv -m 1777 /tmp /var/tmp -mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} -mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} -mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} -mkdir -pv /usr/{,local/}share/man/man{1..8} - -mkdir -v /var/{log,mail,spool} -ln -sv /run /var/run -ln -sv /run/lock /var/lock -mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local} - - Directories are, by default, created with permission mode 755, but - this is not desirable for all directories. In the commands above, two - changes are made—one to the home directory of user root, and another to the directories for - temporary files. - - The first mode change ensures that not just anybody can enter - the /root directory—the - same as a normal user would do with his or her home directory. The - second mode change makes sure that any user can write to the - /tmp and /var/tmp directories, but cannot remove - another user's files from them. The latter is prohibited by the so-called - sticky bit, the highest bit (1) in the 1777 bit mask. - - - FHS Compliance Note - - The directory tree is based on the Filesystem Hierarchy Standard - (FHS) (available at ). The FHS also specifies - the optional existence of some directories such as /usr/local/games and /usr/share/games. We create only the - directories that are needed. However, feel free to create these - directories. - - - - diff --git a/chapter06/dejagnu.xml b/chapter06/dejagnu.xml deleted file mode 100644 index 8f1ab7648..000000000 --- a/chapter06/dejagnu.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - %general-entities; -]> - - - - - - dejagnu - &dejagnu-version; -
&dejagnu-url;
-
- - DejaGNU-&dejagnu-version; - - - DejaGNU - - - - - - <para>The <application>DejaGnu</application> package contains a framework for running test - suites on GNU tools. It is written in <command>expect</command>, which itself - uses <application>Tcl</application> (Tool Command Language).</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&dejagnu-ch5-sbu;</seg> - <seg>&dejagnu-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of DejaGNU - - Prepare DejaGNU for compilation: - -./configure --prefix=/usr -makeinfo --html --no-split -o doc/dejagnu.html doc/dejagnu.texi -makeinfo --plaintext -o doc/dejagnu.txt doc/dejagnu.texi - - Build and install the package: - -make install -install -v -dm755 /usr/share/doc/dejagnu-&dejagnu-version; -install -v -m644 doc/dejagnu.{html,txt} \ - /usr/share/doc/dejagnu-&dejagnu-version; - - To test the results, issue: - -make check - - - - - - Contents of DejaGNU - - - Installed program - - - runtest - - - - - Short Descriptions - - - - - runtest - - A wrapper script that locates the proper - expect shell and then runs DejaGNU - - runtest - - - - - - - - -
diff --git a/chapter06/expect.xml b/chapter06/expect.xml deleted file mode 100644 index 20b227ea5..000000000 --- a/chapter06/expect.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - %general-entities; -]> - - - - - - expect - &expect-version; -
&expect-url;
-
- - Expect-&expect-version; - - - Expect - - - - - - <para>The <application>Expect</application> package contains tools for - automating, via scripted dialogues, interactive applications such as - <command>telnet</command>, <command>ftp</command>, - <command>passwd</command>, <command>fsck</command>, - <command>rlogin</command>, and <command>tip</command>. - <application>Expect</application> is also useful for testing these same - applications as well as easing all sorts of tasks that are prohibitively - difficult with anything else. The <application>DejaGnu</application> - framework is written in <application>Expect</application>.</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&expect-ch5-sbu;</seg> - <seg>&expect-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Expect - - Prepare Expect for compilation: - - -./configure --prefix=/usr \ - --with-tcl=/usr/lib \ - --enable-shared \ - --mandir=/usr/share/man \ - --with-tclinclude=/usr/include - - - The meaning of the configure options: - - - --with-tcl=/usr/lib - - This parameter is needed to tell the - configure where the - tclConfig.sh is located. - - - - - --with-tclinclude=/usr/include - - This explicitly tells Expect where to find Tcl's internal - headers. Using this option avoids conditions where - configure fails because it cannot automatically - discover the location of Tcl's headers. - - - - - - Build the package: - -make - - Install the package: - -make install -ln -svf expect&expect-version;/libexpect&expect-version;.so /usr/lib - - - - - Contents of Expect - - - Installed program - Installed library - - - expect - libexpect-&expect-lib-version;.so - - - - - Short Descriptions - - - - - expect - - Communicates with other interactive programs according - to a script - - expect - - - - - - libexpect-&expect-lib-version;.so - - Contains functions that allow Expect to be used as a Tcl - extension or to be used directly from C or C++ (without Tcl) - - libexpect-&expect-lib-version; - - - - - - - - -
diff --git a/chapter06/flex.xml b/chapter06/flex.xml deleted file mode 100644 index 88e263413..000000000 --- a/chapter06/flex.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - %general-entities; -]> - - - - - - flex - &flex-version; -
&flex-url;
-
- - Flex-&flex-version; - - - Flex - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/flex.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&flex-ch5-sbu;</seg> - <seg>&flex-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Flex - - Prepare Flex for compilation: - -./configure --prefix=/usr \ - --docdir=/usr/share/doc/flex-&flex-version; - - - Compile the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-flex" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/gcc-pass1.xml b/chapter06/gcc-pass1.xml deleted file mode 100644 index 1bd308f09..000000000 --- a/chapter06/gcc-pass1.xml +++ /dev/null @@ -1,208 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-gcc-pass1" role="wrap" xreflabel="gcc-pass1"> - <?dbhtml filename="gcc-pass1.html"?> - - <sect1info condition="script"> - <productname>gcc-pass1</productname> - <productnumber>&gcc-version;</productnumber> - <address>&gcc-url;</address> - </sect1info> - - <title>GCC-&gcc-version; - Pass 1 - - - GCC - tools, pass 1 - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/gcc.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&gcc-ch5p1-sbu;</seg> - <seg>&gcc-ch5p1-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Cross GCC - - GCC requires the GMP, MPFR and MPC packages. As these packages may - not be included in your host distribution, they will be built with - GCC. Unpack each package into the GCC source directory and rename the - resulting directories so the GCC build procedures will automatically - use them: - - There are frequent misunderstandings about this chapter. The - procedures are the same as every other chapter as explained earlier (). First extract the gcc tarball from the sources - directory and then change to the directory created. Only then should you - proceed with the instructions below. - -tar -xf ../mpfr-&mpfr-version;.tar.xz -mv -v mpfr-&mpfr-version; mpfr -tar -xf ../gmp-&gmp-version;.tar.xz -mv -v gmp-&gmp-version; gmp -tar -xf ../mpc-&mpc-version;.tar.gz -mv -v mpc-&mpc-version; mpc - - On x86_64 hosts, set the default directory name for - 64-bit libraries to lib: - -case $(uname -m) in - x86_64) - sed -e '/m64=/s/lib64/lib/' \ - -i.orig gcc/config/i386/t-linux64 - ;; -esac - - The GCC documentation recommends building GCC - in a dedicated build directory: - -mkdir -v build -cd build - - Prepare GCC for compilation: - -../configure \ - --target=$LFS_TGT \ - --prefix=$LFS/tools \ - --with-glibc-version=2.11 \ - --with-sysroot=$LFS \ - --with-newlib \ - --without-headers \ - --enable-initfini-array \ - --disable-nls \ - --disable-shared \ - --disable-multilib \ - --disable-decimal-float \ - --disable-threads \ - --disable-libatomic \ - --disable-libgomp \ - --disable-libquadmath \ - --disable-libssp \ - --disable-libvtv \ - --disable-libstdcxx \ - --enable-languages=c,c++ - - The meaning of the configure options: - - - --with-glibc-version=2.11 - - This option ensures the package will be compatible with the host's - version of glibc. It is set to the minimum glibc requirement - specified in the . - - - - - --with-newlib - - Since a working C library is not yet available, this ensures - that the inhibit_libc constant is defined when building libgcc. This prevents - the compiling of any code that requires libc support. - - - - - --without-headers - - When creating a complete cross-compiler, GCC requires - standard headers compatible with the target system. For our - purposes these headers will not be needed. This switch prevents - GCC from looking for them. - - - - - --disable-shared - - This switch forces GCC to link its internal libraries - statically. We need this because the shared libraries require glibc, - which is not yet installed on the target system. - - - - - --disable-decimal-float, --disable-threads, - --disable-libatomic, --disable-libgomp, - --disable-libquadmath, --disable-libssp, --disable-libvtv, - --disable-libstdcxx - - These switches disable support for the decimal floating point - extension, threading, libatomic, libgomp, libquadmath, libssp, - libvtv, and the C++ standard library respectively. These features - will fail to compile when building a cross-compiler and are not - necessary for the task of cross-compiling the temporary libc. - - - - - --disable-multilib - - On x86_64, LFS does not yet support a multilib configuration. - This switch is harmless for x86. - - - - - --enable-languages=c,c++ - - This option ensures that only the C and C++ compilers are built. - These are the only languages needed now. - - - - - - Compile GCC by running: - -make - - Install the package: - - make install - - This build of GCC has installed a couple of internal system - headers. Normally one of them, limits.h, would in turn - include the corresponding system limits.h header, in - this case, $LFS/usr/include/limits.h. However, at the - time of this build of gcc $LFS/usr/include/limits.h - does not exist, so the internal header that has just been installed is a - partial, self-contained file and does not include the extended features of - the system header. This is adequate for building glibc, but the full - internal header will be needed later. Create a full version of the internal - header using a command that is identical to what the GCC build system does - in normal circumstances: - -cd .. -cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ - `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/install-tools/include/limits.h - - - - - - <para>Details on this package are located in - <xref linkend="contents-gcc" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/generalinstructions.xml b/chapter06/generalinstructions.xml deleted file mode 100644 index 05b88b98c..000000000 --- a/chapter06/generalinstructions.xml +++ /dev/null @@ -1,120 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-generalinstructions"> - <?dbhtml filename="generalinstructions.html"?> - - <title>General Compilation Instructions - - When building packages there are several assumptions made within - the instructions: - - - - - Several of the packages are patched before compilation, but only when - the patch is needed to circumvent a problem. A patch is often needed in - both this and the next chapter, but sometimes in only one or the other. - Therefore, do not be concerned if instructions for a downloaded patch seem - to be missing. Warning messages about offset or - fuzz may also be encountered when applying a patch. Do - not worry about these warnings, as the patch was still successfully - applied. - - - - During the compilation of most packages, there will be several - warnings that scroll by on the screen. These are normal and can safely be - ignored. These warnings are as they appear—warnings about - deprecated, but not invalid, use of the C or C++ syntax. C standards change - fairly often, and some packages still use the older standard. This is not a - problem, but does prompt the warning. - - - - Check one last time that the LFS environment variable - is set up properly: - -echo $LFS - - Make sure the output shows the path to the LFS partition's mount - point, which is /mnt/lfs, using our - example. - - - - - Finally, two important items must be emphasized: - - - - The build instructions assume that the , including symbolic links, have - been set properly: - - - - bash is the shell - in use. - - sh is a symbolic - link to bash. - - /usr/bin/awk is a - symbolic link to gawk. - - /usr/bin/yacc is a - symbolic link to bison or a small script that - executes bison. - - - - - - To re-emphasize the build process: - - - - Place all the sources and patches in a directory that will be - accessible from the chroot environment such as - /mnt/lfs/sources/. - - - Change to the sources directory. - - - For each package: - - - Using the tar program, extract the package - to be built. In Chapter 5, ensure you are the lfs - user when extracting the package. - - - Change to the directory created when the package was - extracted. - - - Follow the book's instructions for building the package. - - - Change back to the sources directory. - - - Delete the extracted source directory unless instructed otherwise. - - - - - - - - - -
diff --git a/chapter06/gettext.xml b/chapter06/gettext.xml deleted file mode 100644 index 34d0ee32e..000000000 --- a/chapter06/gettext.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - %general-entities; -]> - - - - - - gettext - &gettext-version; -
&gettext-url;
-
- - Gettext-&gettext-version; - - - Gettext - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter08/gettext.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&gettext-ch5-sbu;</seg> - <seg>&gettext-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Gettext - - For our temporary set of tools, we only need to install - three programs from Gettext. - - Prepare Gettext for compilation: - -./configure --disable-shared - - - The meaning of the configure option: - - - --disable-shared - - We do not need to install any of the shared Gettext libraries at - this time, therefore there is no need to build them. - - - - - - Compile the package: - -make - - Install the msgfmt, msgmerge and - xgettext programs: - -cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin - - - - - - - <para>Details on this package are located in - <xref linkend="contents-gettext" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/glibc.xml b/chapter06/glibc.xml deleted file mode 100644 index 5213c23e5..000000000 --- a/chapter06/glibc.xml +++ /dev/null @@ -1,230 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-glibc" role="wrap"> - <?dbhtml filename="glibc.html"?> - - <sect1info condition="script"> - <productname>glibc</productname> - <productnumber>&glibc-version;</productnumber> - <address>&glibc-url;</address> - </sect1info> - - <title>Glibc-&glibc-version; - - - Glibc - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/glibc.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&glibc-ch5-sbu;</seg> - <seg>&glibc-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Glibc - - First, create two symbolic links, which are needed for proper - operation of the dynamic library loader: - -ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64 -ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3 - - Some of the Glibc programs use the non-FHS compliant - /var/db directory to store their - runtime data. Apply the following patch to make such programs store their - runtime data in the FHS-compliant locations: - -patch -Np1 -i ../glibc-&glibc-version;-fhs-1.patch - - The Glibc documentation recommends building Glibc - in a dedicated build directory: - -mkdir -v build -cd build - - Next, prepare Glibc for compilation: - -../configure \ - --prefix=/usr \ - --host=$LFS_TGT \ - --build=$(../scripts/config.guess) \ - --enable-kernel=&min-kernel; \ - --with-headers=$LFS/usr/include \ - libc_cv_slibdir=/lib - - - - The meaning of the configure options: - - - --host=$LFS_TGT, --build=$(../scripts/config.guess) - - The combined effect of these switches is that Glibc's build system - configures itself to be cross-compiled, using the cross-linker and - cross-compiler in /tools. - - - - - --enable-kernel=&min-kernel; - - This tells Glibc to compile the library with support - for &min-kernel; and later Linux kernels. Workarounds for older - kernels are not enabled. - - - - - --with-headers=$LFS/usr/include - - This tells Glibc to compile itself against the headers recently - installed to the usr/include directory, so that it knows exactly what - features the kernel has and can optimize itself accordingly. - - - - - libc_cv_slibdir=/lib - - This ensures that the library is installed in /lib instead - of the default /lib64 on 64 bit machines. - - - - - - - During this stage the following warning might appear: - -
-configure: WARNING: -*** These auxiliary programs are missing or -*** incompatible versions: msgfmt -*** some features will be disabled. -*** Check the INSTALL file for required versions. -
- - The missing or incompatible msgfmt program is - generally harmless. This msgfmt program is part of the - Gettext package which the host distribution should provide. - - There have been reports that this package may fail when - building as a "parallel make". If this occurs, rerun the make command - with a "-j1" option. - - Compile the package: - -make - - Install the package: - -make DESTDIR=$LFS install - - - The meaning of the <command>make install</command> option: - - - DESTDIR=$LFS - - The DESTDIR make variable is used by almost all - packages to define the location where the package should be - installed. If it is not set, it defaults to the root (/) directory. Here we specify that - the package be installed in $LFS - , which will become the root after . - - - - - - - At this point, it is imperative to stop and ensure that the basic - functions (compiling and linking) of the new toolchain are working as - expected. To perform a sanity check, run the following commands: - -echo 'int main(){}' > dummy.c -$LFS_TGT-gcc dummy.c -readelf -l a.out | grep '/ld-linux' - - If everything is working correctly, there should be no errors, - and the output of the last command will be of the form: - -[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] - - Note that for 32-bit machines, the interpreter name will be - /lib/ld-linux.so.2. - - If the output is not shown as above or there was no output at all, - then something is wrong. Investigate and retrace the steps to find out - where the problem is and correct it. This issue must be resolved before - continuing on. - - Once all is well, clean up the test files: - -rm -v dummy.c a.out - - - - Building packages in the next sections will serve as an - additional check that the toolchain has been built properly. If some - package, especially binutils-pass2 or gcc-pass2, fails to build, it is - an indication that something has gone wrong with the - previous Binutils, GCC, or Glibc installations. - - Now that our cross-toolchain is complete, finalize the installation - of the limits.h header. For doing so, run an utility provided by the GCC - developers: - -$LFS/tools/libexec/gcc/$LFS_TGT/&gcc-version;/install-tools/mkheaders - -
- - - - - <para>Details on this package are located in - <xref linkend="contents-glibc" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/kernfs.xml b/chapter06/kernfs.xml deleted file mode 100644 index dd6b8991c..000000000 --- a/chapter06/kernfs.xml +++ /dev/null @@ -1,115 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-kernfs"> - <?dbhtml filename="kernfs.html"?> - - <title>Preparing Virtual Kernel File Systems - - - /dev/* - - - Various file systems exported by the kernel are used to communicate to - and from the kernel itself. These file systems are virtual in that no disk - space is used for them. The content of the file systems resides in - memory. - - Begin by creating directories onto which the file systems will be - mounted: - -mkdir -pv $LFS/{dev,proc,sys,run} - - - Creating Initial Device Nodes - - When the kernel boots the system, it requires the presence of a few - device nodes, in particular the console and null devices. The device nodes must be created - on the hard disk so that they are available before udevd - has been started, and additionally when Linux is started with - init=/bin/bash. Create the devices by running the - following commands: - -mknod -m 600 $LFS/dev/console c 5 1 -mknod -m 666 $LFS/dev/null c 1 3 - - - - - Mounting and Populating /dev - - The recommended method of populating the /dev directory with devices is to mount a - virtual filesystem (such as tmpfs) on the /dev directory, and allow the devices to be - created dynamically on that virtual filesystem as they are detected or - accessed. Device creation is generally done during the boot process - by Udev. Since this new system does not yet have Udev and has not yet - been booted, it is necessary to mount and populate /dev manually. This is accomplished by bind - mounting the host system's /dev - directory. A bind mount is a special type of mount that allows you to - create a mirror of a directory or mount point to some other location. Use - the following command to achieve this: - -mount -v --bind /dev $LFS/dev - - - - - Mounting Virtual Kernel File Systems - - Now mount the remaining virtual kernel filesystems: - -mount -v --bind /dev/pts $LFS/dev/pts -mount -vt proc proc $LFS/proc -mount -vt sysfs sysfs $LFS/sys -mount -vt tmpfs tmpfs $LFS/run - - - The meaning of the mount options for devpts: - - - gid=5 - - This ensures that all devpts-created device nodes are owned by - group ID 5. This is the ID we will use later on for the tty group. We use the group ID instead - of a name, since the host system might use a different ID for its - tty group. - - - - - mode=0620 - - This ensures that all devpts-created device nodes have mode 0620 - (user readable and writable, group writable). Together with the - option above, this ensures that devpts will create device nodes that - meet the requirements of grantpt(), meaning the Glibc - pt_chown helper binary (which is not installed by - default) is not necessary. - - - - - - In some host systems, /dev/shm is a - symbolic link to /run/shm. - The /run tmpfs was mounted above so in this case only a - directory needs to be created. - -if [ -h $LFS/dev/shm ]; then - mkdir -pv $LFS/$(readlink $LFS/dev/shm) -fi - - - -
diff --git a/chapter06/libstdc++-pass2.xml b/chapter06/libstdc++-pass2.xml deleted file mode 100644 index 999a4fa4e..000000000 --- a/chapter06/libstdc++-pass2.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - %general-entities; -]> - - - - - - gcc-libstdc++ - &gcc-version; -
&gcc-url;
-
- - Libstdc++ from GCC-&gcc-version;, Pass 2 - - - GCC - tools, libstdc++ pass 2 - - - - - - <para>Again, when building <xref linkend="ch-tools-gcc-pass2"/>, we had to - defer the installation of the C++ standard library, because no suitable - compiler was available to compile it: we could not use the compiler - installed, because this compiler is a native - compiler, and should not be used outside of chroot without being at - risk of polluting the build with some host components.</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <!-- TODO --> - <seglistitem> - <seg>&libstdcpp-ch5-sbu;</seg> - <seg>&libstdcpp-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Target Libstdc++ - - - Libstdc++ is part of the GCC sources. - You should first unpack the GCC tarball and change to the - gcc-&gcc-version; directory. - - - Create a link which exists when building Libstdc++ in the gcc - tree: - -ln -s gthr-posix.h libgcc/gthr-default.h - - Create a separate build directory for Libstdc++ and enter it: - -mkdir -v build -cd build - - Prepare Libstdc++ for compilation: - -../libstdc++-v3/configure \ - CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ - --prefix=/usr \ - --disable-multilib \ - --disable-nls \ - --disable-libstdcxx-pch - - - The meaning of the configure options: - - - CXXFLAGS="-g -O2 -D_GNU_SOURCE" - - Those flags are passed by the top level Makefile when doing - a full build of GCC. - - - - - --disable-libstdcxx-pch - - This switch prevents the installation of precompiled - include files, which are not needed at this stage. - - - - - - Compile libstdc++ by running: - -make - - Install the library: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-gcc" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/libstdc++.xml b/chapter06/libstdc++.xml deleted file mode 100644 index 3a1b0f2bf..000000000 --- a/chapter06/libstdc++.xml +++ /dev/null @@ -1,122 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-libstdcpp-pass1" role="wrap"> - <?dbhtml filename="gcc-libstdc++-pass1.html"?> - - <sect1info condition="script"> - <productname>gcc-libstdc++</productname> - <productnumber>&gcc-version;</productnumber> - <address>&gcc-url;</address> - </sect1info> - - <title>Libstdc++ from GCC-&gcc-version;, Pass 1 - - - GCC - tools, libstdc++ pass 1 - - - - - - <para>Libstdc++ is the standard C++ library. It is needed - to compile C++ code - (part of GCC is written in C++), but we had to defer its installation - when we built <xref linkend="ch-tools-gcc-pass1"/> - because it depends on glibc, which was not yet available in the target - directory. - </para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&libstdcpp-ch5-sbu;</seg> - <seg>&libstdcpp-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Target Libstdc++ - - - Libstdc++ is part of the GCC sources. - You should first unpack the GCC tarball and change to the - gcc-&gcc-version; directory. - - - Create a separate build directory for Libstdc++ and enter it: - -mkdir -v build -cd build - - Prepare Libstdc++ for compilation: - -../libstdc++-v3/configure \ - --host=$LFS_TGT \ - --build=$(../config.guess) \ - --prefix=/usr \ - --disable-multilib \ - --disable-nls \ - --disable-libstdcxx-pch \ - --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version; - - - The meaning of the configure options: - - - --host=... - - Indicates to use the cross compiler we have just built - instead of the one in /usr/bin. - - - - - --disable-libstdcxx-pch - - This switch prevents the installation of precompiled - include files, which are not needed at this stage. - - - - - --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version; - - This is the location where the standard include files are - searched by the C++ compiler. In a normal build, this information - is automatically passed to the Libstdc++ configure - options from the top level directory. In our case, this information - must be explicitly given. - - - - - - Compile libstdc++ by running: - -make - - Install the library: - -make DESTDIR=$LFS install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-gcc" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/linux-headers.xml b/chapter06/linux-headers.xml deleted file mode 100644 index 6c1af3173..000000000 --- a/chapter06/linux-headers.xml +++ /dev/null @@ -1,207 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-linux-headers" role="wrap"> - <?dbhtml filename="linux-headers.html"?> - - <sect1info condition="script"> - <productname>linux-headers</productname> - <productnumber>&linux-version;</productnumber> - <address>&linux-url;</address> - </sect1info> - - <title>Linux-&linux-version; API Headers - - - Linux - tools, API headers - - - - - - <para>The Linux API Headers (in linux-&linux-version;.tar.xz) expose the - kernel's API for use by Glibc.</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&linux-headers-ch5-sbu;</seg> - <seg>&linux-headers-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Linux API Headers - - The Linux kernel needs to expose an Application Programming Interface - (API) for the system's C library (Glibc in LFS) to use. This is done - by way of sanitizing various C header files that are shipped in the Linux - kernel source tarball. - - Make sure there are no stale files embedded in the package: - -make mrproper - - Now extract the user-visible kernel headers from the source. - The recommended make target headers_install cannot be - used, because it requires rsync, which may not - be available. The headers are first placed in - ./usr, then copied to the needed - location. - -make headers -find usr/include -name '.*' -delete -rm usr/include/Makefile -cp -rv usr/include $LFS/usr - - - - - Contents of Linux API Headers - - - Installed headers - Installed directories - - - /usr/include/asm/*.h, /usr/include/asm-generic/*.h, - /usr/include/drm/*.h, /usr/include/linux/*.h, /usr/include/misc/*.h, - /usr/include/mtd/*.h, /usr/include/rdma/*.h, /usr/include/scsi/*.h, - /usr/include/sound/*.h, /usr/include/video/*.h, - and /usr/include/xen/*.h - /usr/include/asm, /usr/include/asm-generic, /usr/include/drm, - /usr/include/linux, /usr/include/misc, /usr/include/mtd, - /usr/include/rdma, /usr/include/scsi, /usr/include/sound, - /usr/include/video, and /usr/include/xen - - - - - Short Descriptions - - - - - /usr/include/asm/*.h - - The Linux API ASM Headers - - /usr/include/asm/*.h - - - - - - /usr/include/asm-generic/*.h - - The Linux API ASM Generic Headers - - /usr/include/asm-generic/*.h - - - - - - /usr/include/drm/*.h - - The Linux API DRM Headers - - /usr/include/drm/*.h - - - - - - /usr/include/linux/*.h - - The Linux API Linux Headers - - /usr/include/linux/*.h - - - - - - /usr/include/misc/*.h - - The Linux API Miscellaneous Headers - - /usr/include/misc/*.h - - - - - - /usr/include/mtd/*.h - - The Linux API MTD Headers - - /usr/include/mtd/*.h - - - - - - /usr/include/rdma/*.h - - The Linux API RDMA Headers - - /usr/include/rdma/*.h - - - - - - /usr/include/scsi/*.h - - The Linux API SCSI Headers - - /usr/include/scsi/*.h - - - - - - /usr/include/sound/*.h - - The Linux API Sound Headers - - /usr/include/sound/*.h - - - - - - /usr/include/video/*.h - - The Linux API Video Headers - - /usr/include/video/*.h - - - - - - /usr/include/xen/*.h - - The Linux API Xen Headers - - /usr/include/xen/*.h - - - - - - - - -
diff --git a/chapter06/perl.xml b/chapter06/perl.xml deleted file mode 100644 index 663d3dbc2..000000000 --- a/chapter06/perl.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - %general-entities; -]> - - - - - - perl - &perl-version; -
&perl-url;
-
- - Perl-&perl-version; - - - Perl - tools - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter06/perl.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&perl-ch5-sbu;</seg> - <seg>&perl-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Perl - - Prepare Perl for compilation: - -sh Configure -des -Dprefix=/usr - - - The meaning of the new Configure options: - - -des - - This is a combination of three options: -d uses defaults for - all items; -e ensures completion of all tasks; -s silences - non-essential output. - - - - - - Build the package: - -make - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-perl" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/python.xml b/chapter06/python.xml deleted file mode 100644 index 52c070ab3..000000000 --- a/chapter06/python.xml +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-system-Python-temp" role="wrap"> - <?dbhtml filename="Python-temp.html"?> - - <sect1info condition="script"> - <productname>Python</productname> - <productnumber>&python-version;</productnumber> - <address>&python-url;</address> - </sect1info> - - <title>Python-&python-version; - - - Python - temporary - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter08/python.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&python-ch5-sbu;</seg> - <seg>&python-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Python - - - There are two package files whose name starts with - python. The one to extract from is - Python-&python-version;.tar.xz (notice the - uppercase first letter). - - - Prepare Python for compilation: - -./configure --prefix=/usr --without-ensurepip - - - The meaning of the configure option: - - - --without-ensurepip - - This switch disables the Python package installer, which is not - needed at this stage. - - - - - - Compile the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-python" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/tcl.xml b/chapter06/tcl.xml deleted file mode 100644 index bd17a91a8..000000000 --- a/chapter06/tcl.xml +++ /dev/null @@ -1,191 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; - <!ENTITY tdbc-ver "1.1.1"> - <!ENTITY itcl-ver "4.2.0"> -]> - -<sect1 id="ch-tools-tcl" role="wrap"> - <?dbhtml filename="tcl.html"?> - - <sect1info condition="script"> - <productname>tcl</productname> - <productnumber>&tcl-version;</productnumber> - <address>&tcl-url;</address> - </sect1info> - - <title>Tcl-&tcl-version; - - - Tcl - - - - - - <para>The <application>Tcl</application> package contains the Tool Command Language, - a robust general-purpose scripting language. The <application>Expect</application> package - is written in the <application>Tcl</application> language.</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&tcl-ch5-sbu;</seg> - <seg>&tcl-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Tcl - - This package and the next two (Expect and DejaGNU) are - installed to support running the test suites for GCC and Binutils and other - packages. Installing three packages for testing purposes may seem - excessive, but it is very reassuring, if not essential, to know that the - most important tools are working properly. These packages are required - to run the test suites in . - - Note that the Tcl package used here is a minimal version needed - to run the LFS tests. For the full package, see the - BLFS Tcl procedures. - - Prepare Tcl for compilation: - -SRCDIR=$(pwd) -cd unix -./configure --prefix=/usr \ - --mandir=/usr/share/man \ - $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit) - - - The meaning of the configure options: - - - $([ "$(uname -m)" = x86_64 ] && echo --enable-64bit) - - The construct $(<shell command>) - is replaced by the output of the chell command. Here this output is - empty if running on a 32 bit machine, and is - --enable-64bit if running on a 64 bit machine. - - - - - - - Build the package: - -make - -sed -e "s|$SRCDIR/unix|/usr/lib|" \ - -e "s|$SRCDIR|/usr/include|" \ - -i tclConfig.sh - -sed -e "s|$SRCDIR/unix/pkgs/tdbc&tdbc-ver;|/usr/lib/tdbc&tdbc-ver;|" \ - -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/generic|/usr/include|" \ - -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;/library|/usr/lib/tcl8.6|" \ - -e "s|$SRCDIR/pkgs/tdbc&tdbc-ver;|/usr/include|" \ - -i pkgs/tdbc&tdbc-ver;/tdbcConfig.sh - -sed -e "s|$SRCDIR/unix/pkgs/itcl&itcl-ver;|/usr/lib/itcl&itcl-ver;|" \ - -e "s|$SRCDIR/pkgs/itcl&itcl-ver;/generic|/usr/include|" \ - -e "s|$SRCDIR/pkgs/itcl&itcl-ver;|/usr/include|" \ - -i pkgs/itcl&itcl-ver;/itclConfig.sh - -unset SRCDIR - - The various sed after the make command - remove references to the build directory from various configuration files, - and replaces them with the install directory. This is not mandatory - for the remaining of LFS, but may be needed in case a package built later - uses Tcl. - - Install the package: - -make install - - Make the installed library writable so debugging symbols can - be removed later: - -chmod -v u+w /usr/lib/libtcl&tcl-major-version;.so - - Install Tcl's headers. The next package, Expect, requires them - to build. - -make install-private-headers - - Now make a necessary symbolic link: - -ln -sfv tclsh&tcl-major-version; /usr/bin/tclsh - - - - - Contents of Tcl - - - Installed programs - Installed library - - - tclsh (link to tclsh&tcl-major-version;) and tclsh&tcl-major-version; - libtcl&tcl-major-version;.so, libtclstub&tcl-major-version;.a - - - - - Short Descriptions - - - - - tclsh&tcl-major-version; - - The Tcl command shell - - tclsh&tcl-major-version; - - - - - - tclsh - - A link to tclsh&tcl-major-version; - - tclsh - - - - - - libtcl&tcl-major-version;.so - - The Tcl library - - libtcl&tcl-major-version;.so - - - - - - libtclstub&tcl-major-version;.a - - The Tcl Stub library - - libtclstub&tcl-major-version;.a - - - - - - - - -
diff --git a/chapter06/texinfo.xml b/chapter06/texinfo.xml deleted file mode 100644 index 8434c7112..000000000 --- a/chapter06/texinfo.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - %general-entities; -]> - - - - - - texinfo - &texinfo-version; -
&texinfo-url;
-
- - Texinfo-&texinfo-version; - - - Texinfo - temporary - - - - - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="../chapter08/texinfo.xml" - xpointer="xpointer(/sect1/sect2[1]/para[1])"/> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&texinfo-ch5-sbu;</seg> - <seg>&texinfo-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Texinfo - - Prepare Texinfo for compilation: - -./configure --prefix=/usr - - - As part of the configure process, a test is made that indicates an - error for TestXS_la-TestXS.lo. This is not relevant for LFS and should be - ignored. - - - Compile the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-texinfo" role="."/></para> - - </sect2> - -</sect1> diff --git a/chapter06/toolchaintechnotes.xml b/chapter06/toolchaintechnotes.xml deleted file mode 100644 index 63c9210e5..000000000 --- a/chapter06/toolchaintechnotes.xml +++ /dev/null @@ -1,335 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ - <!ENTITY % general-entities SYSTEM "../general.ent"> - %general-entities; -]> - -<sect1 id="ch-tools-toolchaintechnotes"> - <?dbhtml filename="toolchaintechnotes.html"?> - - <title>Toolchain Technical Notes - - This section explains some of the rationale and technical details - behind the overall build method. It is not essential to immediately - understand everything in this section. Most of this information will be - clearer after performing an actual build. This section can be referred - to at any time during the process. - - The overall goal of is to - produce a temporary area that contains a known-good set of tools that can be - isolated from the host system. By using chroot, the - commands in the remaining chapters will be contained within that environment, - ensuring a clean, trouble-free build of the target LFS system. The build - process has been designed to minimize the risks for new readers and to provide - the most educational value at the same time. - - The build process is based on the process of - cross-compilation. Cross-compilation is normally used - for building a compiler and its toolchain for a machine different from - the one that is used for the build. This is not strictly needed for LFS, - since the machine where the new system will run is the same as the one - used for the build. But cross-compilation has the great advantage that - anything that is cross-compiled cannot depend on the host environment. - - - - About Cross-Compilation - - Cross-compilation involves some concepts that deserve a section on - their own. Although this section may be omitted in a first reading, it - is strongly suggested to come back to it later in order to get a full - grasp of the build process. - - Let us first define some terms used in this context: - - - build - is the machine where we build programs. Note that this machine - is referred to as the host in other - sections. - - - host - is the machine/system where the built programs will run. Note - that this use of host is not the same as in other - sections. - - - target - is only used for compilers. It is the machine the compiler - produces code for. It may be different from both build and - host. - - - - - As an example, let us imagine the following scenario: we may have a - compiler on a slow machine only, let's call the machine A, and the compiler - ccA. We may have also a fast machine (B), but with no compiler, and we may - want to produce code for a another slow machine (C). Then, to build a - compiler for machine C, we would have three stages: - - - - - - - - - - StageBuildHost - TargetAction - - - - 1AAB - build cross-compiler cc1 using ccA on machine A - - - 2ABB - build cross-compiler cc2 using cc1 on machine A - - - 3BCC - build compiler ccC using cc2 on machine B - - - - - - Then, all the other programs needed by machine C can be compiled - using cc2 on the fast machine B. Note that unless B can run programs - produced for C, there is no way to test the built programs until machine - C itself is running. For example, for testing ccC, we may want to add a - fourth stage: - - - - - - - - - - StageBuildHost - TargetAction - - - - 4CCC - rebuild and test ccC using itself on machine C - - - - - - In the example above, only cc1 and cc2 are cross-compilers, that is, - they produce code for a machine different from the one they are run on. - The other compilers ccA and ccC produce code for the machine they are run - on. Such compilers are called native compilers. - - - - - Implementation of Cross-Compilation for LFS - - - Almost all the build systems use names of the form - cpu-vendor-kernel-os referred to as the machine triplet. An astute - reader may wonder why a triplet refers to a four component - name. The reason is history: initially, three component names were enough - to designate unambiguously a machine, but with new machines and systems - appearing, that proved insufficient. The word triplet - remained. A simple way to determine your machine triplet is to run - the config.guess - script that comes with the source for many packages. Unpack the Binutils - sources and run the script: ./config.guess and note - the output. For example, for a 32-bit Intel processor the - output will be i686-pc-linux-gnu. On a 64-bit - system it will be x86_64-pc-linux-gnu. - - Also be aware of the name of the platform's dynamic linker, often - referred to as the dynamic loader (not to be confused with the standard - linker ld that is part of Binutils). The dynamic linker - provided by Glibc finds and loads the shared libraries needed by a - program, prepares the program to run, and then runs it. The name of the - dynamic linker for a 32-bit Intel machine will be ld-linux.so.2 (ld-linux-x86-64.so.2 for 64-bit systems). A - sure-fire way to determine the name of the dynamic linker is to inspect a - random binary from the host system by running: readelf -l - <name of binary> | grep interpreter and noting the - output. The authoritative reference covering all platforms is in the - shlib-versions file in the root of the Glibc source - tree. - - - In order to fake a cross compilation, the name of the host triplet - is slightly adjusted by changing the "vendor" field in the - LFS_TGT variable. We also use the - --with-sysroot when building the cross linker and - cross compiler, to tell them where to find the needed host files. This - ensures none of the other programs built in can link to libraries on the build - machine. Only two stages are mandatory, and one more for tests: - - - - - - - - - - StageBuildHost - TargetAction - - - - 1pcpclfs - build cross-compiler cc1 using cc-pc on pc - - - 2pclfslfs - build compiler cc-lfs using cc1 on pc - - - 3lfslfslfs - rebuild and test cc-lfs using itself on lfs - - - - - - In the above table, on pc means the commands are run - on a machine using the already installed distribution. On - lfs means the commands are run in a chrooted environment. - - Now, there is more about cross-compiling: the C language is not - just a compiler, but also defines a standard library. In this book, the - GNU C library, named glibc, is used. This library must - be compiled for the lfs machine, that is, using the cross compiler cc1. - But the compiler itself uses an internal library implementing complex - instructions not available in the assembler instruction set. This - internal library is named libgcc, and must be linked to the glibc - library to be fully functional! Furthermore, the standard library for - C++ (libstdc++) also needs being linked to glibc. The solution - to this chicken and egg problem is to first build a degraded cc1+libgcc, - lacking some fuctionalities such as threads and exception handling, then - build glibc using this degraded compiler (glibc itself is not - degraded), then build libstdc++. But this last library will lack the - same functionalities as libgcc. - - This is not the end of the story: the conclusion of the preceding - paragraph is that cc1 is unable to build a fully functional libstdc++, but - this is the only compiler available for building the C/C++ libraries - during stage 2! Of course, the compiler built during stage 2, cc-lfs, - would be able to build those libraries, but (i) the build system of - gcc does not know that it is usable on pc, and (ii) using it on pc - would be at risk of linking to the pc libraries, since cc-lfs is a native - compiler. So we have to build libstdc++ later, in chroot. - - - - - - Other procedural details - - The cross-compiler will be installed in a separate $LFS/tools directory, since it will not - be part of the final system. - - Binutils is installed first because the configure - runs of both GCC and Glibc perform various feature tests on the assembler - and linker to determine which software features to enable or disable. This - is more important than one might first realize. An incorrectly configured - GCC or Glibc can result in a subtly broken toolchain, where the impact of - such breakage might not show up until near the end of the build of an - entire distribution. A test suite failure will usually highlight this error - before too much additional work is performed. - - Binutils installs its assembler and linker in two locations, - $LFS/tools/bin and $LFS/tools/$LFS_TGT/bin. The tools in one - location are hard linked to the other. An important facet of the linker is - its library search order. Detailed information can be obtained from - ld by passing it the --verbose - flag. For example, $LFS_TGT-ld --verbose | grep SEARCH - will illustrate the current search paths and their order. It shows which - files are linked by ld by compiling a dummy program and - passing the --verbose switch to the linker. For - example, - $LFS_TGT-gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded - will show all the files successfully opened during the linking. - - The next package installed is GCC. An example of what can be - seen during its run of configure is: - -checking what assembler to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/as -checking what linker to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/ld - - This is important for the reasons mentioned above. It also - demonstrates that GCC's configure script does not search the PATH - directories to find which tools to use. However, during the actual - operation of gcc itself, the same search paths are not - necessarily used. To find out which standard linker gcc - will use, run: $LFS_TGT-gcc -print-prog-name=ld. - - Detailed information can be obtained from gcc by - passing it the -v command line option while compiling - a dummy program. For example, gcc -v dummy.c will show - detailed information about the preprocessor, compilation, and assembly - stages, including gcc's included search paths and their - order. - - Next installed are sanitized Linux API headers. These allow the - standard C library (Glibc) to interface with features that the Linux - kernel will provide. - - The next package installed is Glibc. The most important - considerations for building Glibc are the compiler, binary tools, and - kernel headers. The compiler is generally not an issue since Glibc will - always use the compiler relating to the --host - parameter passed to its configure script; e.g. in our case, the compiler - will be $LFS_TGT-gcc. The binary tools and kernel - headers can be a bit more complicated. Therefore, take no risks and use - the available configure switches to enforce the correct selections. After - the run of configure, check the contents of the - config.make file in the build directory for all important details. - Note the use of CC="$LFS_TGT-gcc" (with - $LFS_TGT expanded) to control which binary tools are used - and the use of the -nostdinc and - -isystem flags to control the compiler's include - search path. These items highlight an important aspect of the Glibc - package—it is very self-sufficient in terms of its build machinery - and generally does not rely on toolchain defaults. - - As said above, the standard C++ library is compiled next, followed - by all the programs that need themselves to be built. The install step - uses the DESTDIR variable to have the programs land into - the LFS filesystem. - - Then the native lfs compiler is built. First Binutils Pass 2, with - the same DESTDIR install as the other programs, then the - second pass of GCC, omitting libstdc++ and other non-important libraries. - Due to some weird logic in GCC's configure script, - CC_FOR_TARGET ends up as cc when host - is the same as target, but is different from build. This is why - CC_FOR_TARGET=$LFS_TGT-gcc is put explicitely into - the configure options. - - Upon entering the chroot environment in , the first task is to install - libstdc++. Then temporary installations of programs needed for the proper - operation of the toolchain are performed. Programs needed for testing - other programs are also built. From this point onwards, the - core toolchain is self-contained and self-hosted. In the remainder of - the , final versions of all the - packages needed for a fully functional system are built, tested and - installed. - - - -
diff --git a/chapter06/util-linux.xml b/chapter06/util-linux.xml deleted file mode 100644 index 6aebad7a1..000000000 --- a/chapter06/util-linux.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - %general-entities; -]> - - - - - - util-linux - &util-linux-version; -
&util-linux-url;
-
- - Util-linux-&util-linux-version; - - - Util-linux - tools - - - - - - <para>The Util-linux package contains miscellaneous utility programs.</para> - - <segmentedlist> - <segtitle>&buildtime;</segtitle> - <segtitle>&diskspace;</segtitle> - - <seglistitem> - <seg>&util-linux-ch5-sbu;</seg> - <seg>&util-linux-ch5-du;</seg> - </seglistitem> - </segmentedlist> - - </sect2> - - <sect2 role="installation"> - <title>Installation of Util-linux - - First create a directory - to enable storage for the hwclock program: - -mkdir -pv /var/lib/hwclock - - Prepare Util-linux for compilation: - -./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ - --docdir=/usr/share/doc/util-linux-&util-linux-version; \ - --disable-chfn-chsh \ - --disable-login \ - --disable-nologin \ - --disable-su \ - --disable-setpriv \ - --disable-runuser \ - --disable-pylibmount \ - --disable-static \ - --without-python - - - The meaning of the configure options: - - - ADJTIME_PATH=/var/lib/hwclock/adjtime - - This sets the location of the file recording information about - the hardware clock, in accordance to the FHS. This is not stricly - needed fot his temporary tool, but it prevent creating a file - at another location, which would not be overwritten or removed - when building the final util-linux. - - - - - --disable-* - - Those switches prevent warnings about building components - that require packages not in LFS or not installed yet. - - - - - --without-python - - This switch disables using Python. - It avoids trying to build unneeded bindings. - - - - - - Compile the package: - -make - - Install the package: - -make install - - - - - - - <para>Details on this package are located in - <xref linkend="contents-utillinux" role="."/></para> - - </sect2> - -</sect1> -- cgit v1.2.3-54-g00ecf