Changeset 90e3cb3 for chapter05


Ignore:
Timestamp:
02/01/2004 09:49:10 PM (20 years ago)
Author:
Alex Gronenwoud <alex@…>
Branches:
10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.0, 6.1, 6.1.1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, v5_1, v5_1_1, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
Children:
247acde
Parents:
c288d97
Message:

Replacing several <userinput> tags by <command>.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3203 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

Location:
chapter05
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • chapter05/bash.xml

    rc288d97 r90e3cb3  
    3737<screen><userinput>make install</userinput></screen>
    3838
    39 <para>And make a link for the programs that use <userinput>sh</userinput>
     39<para>And make a link for the programs that use <command>sh</command>
    4040for a shell:</para>
    4141
  • chapter05/binutils-pass1.xml

    rc288d97 r90e3cb3  
    6767<listitem><para><userinput>LDFLAGS="-all-static"</userinput>: This tells the
    6868linker that all the Binutils programs should be linked statically. However,
    69 strictly speaking, <userinput>"-all-static"</userinput> is first passed to the
    70 <emphasis>libtool</emphasis> program which then passes
    71 <userinput>"-static"</userinput> on to the linker.</para></listitem>
     69strictly speaking, <emphasis>"-all-static"</emphasis> is first passed to the
     70<command>libtool</command> program which then passes
     71<emphasis>"-static"</emphasis> on to the linker.</para></listitem>
    7272</itemizedlist>
    7373
  • chapter05/bzip2.xml

    rc288d97 r90e3cb3  
    1414<title>Installation of Bzip2</title>
    1515
    16 <para>The Bzip2 package doesn't contain a <userinput>configure</userinput>
     16<para>The Bzip2 package doesn't contain a <command>configure</command>
    1717script. Compile and install it with a straightforward:</para>
    1818
  • chapter05/chapter05.xml

    rc288d97 r90e3cb3  
    2424
    2525<para>The build instructions assume that you are using the
    26 <userinput>bash</userinput> shell. It is also expected that you have already
     26<command>bash</command> shell. It is also expected that you have already
    2727unpacked a source package (while logged in as user <emphasis>lfs</emphasis> --
    2828explained shortly) and performed a <userinput>cd</userinput> into the source
     
    101101<filename class="directory">/lib</filename> directory on your host system. A
    102102surefire way is to inspect a random binary from your host system by running:
    103 <userinput>'readelf -l &lt;name of binary&gt; | grep interpreter'</userinput>
     103<userinput>readelf -l &lt;name of binary&gt; | grep interpreter</userinput>
    104104and noting the output. The authoritative reference covering all platforms is in
    105105the <filename>shlib-versions</filename> file in the root of the Glibc source
     
    119119choose.</para></listitem>
    120120
    121 <listitem><para>Careful manipulation of <userinput>gcc</userinput>'s
     121<listitem><para>Careful manipulation of <command>gcc</command>'s
    122122<emphasis>specs</emphasis> file to tell the compiler which target dynamic
    123123linker will be used.</para></listitem>
     
    126126<para>Binutils is installed first because both GCC and Glibc perform various
    127127feature tests on the assembler and linker during their respective runs of
    128 <userinput>./configure</userinput> to determine which software features to enable
     128<command>./configure</command> to determine which software features to enable
    129129or disable. This is more important than one might first realize. An incorrectly
    130130configured GCC or Glibc can result in a subtly broken toolchain where the impact
     
    138138the tools in one location are hard linked to the other. An important facet of
    139139the linker is its library search order. Detailed information can be obtained
    140 from <userinput>ld</userinput> by passing it the <emphasis>--verbose</emphasis>
    141 flag. For example: <userinput>'ld --verbose | grep SEARCH'</userinput> will
     140from <command>ld</command> by passing it the <emphasis>--verbose</emphasis>
     141flag. For example: <command>ld --verbose | grep SEARCH</command> will
    142142show you the current search paths and their order. You can see what files are
    143 actually linked by <userinput>ld</userinput> by compiling a dummy program and
    144 passing the <emphasis>--verbose</emphasis> switch. For example:
    145 <userinput>'gcc dummy.c -Wl,--verbose 2>&amp;1 | grep succeeded'</userinput>
    146 will show you all the files successfully opened during the link.</para>
     143actually linked by <command>ld</command> by compiling a dummy program and
     144passing the <emphasis>--verbose</emphasis> switch to the linker. For example:
     145<command>gcc dummy.c -Wl,--verbose 2>&amp;1 | grep succeeded</command>
     146will show you all the files successfully opened during the linking.</para>
    147147
    148148<para>The next package installed is GCC and during its run of
    149 <userinput>./configure</userinput> you'll see, for example:</para>
     149<command>./configure</command> you'll see, for example:</para>
    150150
    151151<blockquote><screen>checking what assembler to use... /tools/i686-pc-linux-gnu/bin/as
     
    154154<para>This is important for the reasons mentioned above. It also demonstrates
    155155that GCC's configure script does not search the $PATH directories to find which
    156 tools to use. However, during the actual operation of <userinput>gcc</userinput>
     156tools to use. However, during the actual operation of <command>gcc</command>
    157157itself, the same search paths are not necessarily used. You can find out which
    158 standard linker <userinput>gcc</userinput> will use by running:
    159 <userinput>'gcc -print-prog-name=ld'</userinput>.
    160 Detailed information can be obtained from <userinput>gcc</userinput> by passing
     158standard linker <command>gcc</command> will use by running:
     159<command>gcc -print-prog-name=ld</command>.
     160Detailed information can be obtained from <command>gcc</command> by passing
    161161it the <emphasis>-v</emphasis> flag while compiling a dummy program. For
    162 example: <userinput>'gcc -v dummy.c'</userinput> will show you detailed
     162example: <command>gcc -v dummy.c</command> will show you detailed
    163163information about the preprocessor, compilation and assembly stages, including
    164 <userinput>gcc</userinput>'s include search paths and their order.</para>
     164<command>gcc</command>'s include search paths and their order.</para>
    165165 
    166166<para>The next package installed is Glibc. The most important considerations for
    167167building Glibc are the compiler, binary tools and kernel headers. The compiler
    168 is generally no problem as Glibc will always use the <userinput>gcc</userinput>
     168is generally no problem as Glibc will always use the <command>gcc</command>
    169169found in a $PATH directory. The binary tools and kernel headers can be a little
    170170more troublesome. Therefore we take no risks and use the available configure
    171171switches to enforce the correct selections. After the run of
    172 <userinput>./configure</userinput> you can check the contents of the
     172<command>./configure</command> you can check the contents of the
    173173<filename>config.make</filename> file in the
    174174<filename class="directory">glibc-build</filename> directory for all the
    175175important details. You'll note some interesting items like the use of
    176 <userinput>CC="gcc -B/tools/bin/"</userinput> to control which binary tools are
     176<emphasis>CC="gcc -B/tools/bin/"</emphasis> to control which binary tools are
    177177used, and also the use of the <emphasis>-nostdinc</emphasis> and
    178178<emphasis>-isystem</emphasis> flags to control the compiler's include search
     
    183183<para>After the Glibc installation, we make some adjustments to ensure that
    184184searching and linking take place only within our <filename>/tools</filename>
    185 prefix. We install an adjusted <userinput>ld</userinput>, which has a hard-wired
     185prefix. We install an adjusted <command>ld</command>, which has a hard-wired
    186186search path limited to <filename class="directory">/tools/lib</filename>. Then
    187 we amend <userinput>gcc</userinput>'s specs file to point to our new dynamic
     187we amend <command>gcc</command>'s specs file to point to our new dynamic
    188188linker in <filename class="directory">/tools/lib</filename>. This last step is
    189189<emphasis>vital</emphasis> to the whole process. As mentioned above, a
    190190hard-wired path to a dynamic linker is embedded into every ELF shared
    191191executable. You can inspect this by running:
    192 <userinput>'readelf -l &lt;name of binary&gt; | grep interpreter'</userinput>.
    193 By amending <userinput>gcc</userinput>'s specs file, we are ensuring that every
    194 program compiled from here through the end of <xref linkend="chapter05"/> will
    195 use our new dynamic linker in
    196 <filename class="directory">/tools/lib</filename>.</para>
     192<command>readelf -l &lt;name of binary&gt; | grep interpreter</command>.
     193By amending <command>gcc</command>'s specs file, we are ensuring that every
     194program compiled from here through the end of this chapter will use our new
     195dynamic linker in <filename class="directory">/tools/lib</filename>.</para>
    197196
    198197<para>The need to use the new dynamic linker is also the reason why we apply the
     
    204203<para>During the second pass of Binutils, we are able to utilize the
    205204<emphasis>--with-lib-path</emphasis> configure switch to control
    206 <userinput>ld</userinput>'s library search path. From this point onwards, the
     205<command>ld</command>'s library search path. From this point onwards, the
    207206core toolchain is self-contained and self-hosted. The remainder of the
    208207<xref linkend="chapter05"/> packages all build against the new Glibc in
     
    214213<filename class="directory">/usr</filename>, we perform a quick changeover of
    215214the toolchain defaults, then proceed for real in building the rest of the
    216 target <xref linkend="chapter06"/> LFS system.</para>
     215target LFS system.</para>
    217216
    218217<sect2>
     
    289288<screen><userinput>ln -s $LFS/tools /</userinput></screen>
    290289
    291 <note><para>The above command is correct. The <userinput>ln</userinput> command
     290<note><para>The above command is correct. The <command>ln</command> command
    292291has a few syntactic variations, so be sure to check the info page before
    293292reporting what you may think is an error.</para></note>
     
    350349<screen><userinput>su - lfs</userinput></screen>
    351350
    352 <para>The "<userinput>-</userinput>" instructs <userinput>su</userinput> to
    353 start a <emphasis>login</emphasis> shell.</para>
     351<para>The "<command>-</command>" instructs <command>su</command> to start a
     352<emphasis>login</emphasis> shell.</para>
    354353
    355354</sect1>
     
    361360
    362361<para>We're going to set up a good working environment by creating two new
    363 startup files for the <userinput>bash</userinput> shell. While logged in as
     362startup files for the <command>bash</command> shell. While logged in as
    364363user <emphasis>lfs</emphasis>, issue the following command to create a new
    365364<filename>.bash_profile</filename>:</para>
     
    373372<filename>/etc/profile</filename> of your host (probably containing some
    374373settings of environment variables) and then <filename>.bash_profile</filename>.
    375 The <userinput>exec env -i ... /bin/bash</userinput> command in the latter file
     374The <command>exec env -i ... /bin/bash</command> command in the latter file
    376375replaces the running shell with a new one with a completely empty environment,
    377376except for the HOME, TERM and PS1 variables. This ensures that no unwanted and
     
    394393<userinput>EOF</userinput></screen>
    395394
    396 <para>The <userinput>set +h</userinput> command turns off
    397 <userinput>bash</userinput>'s hash function. Normally hashing is a useful
    398 feature: <userinput>bash</userinput> uses a hash table to remember the
     395<para>The <command>set +h</command> command turns off
     396<command>bash</command>'s hash function. Normally hashing is a useful
     397feature: <command>bash</command> uses a hash table to remember the
    399398full pathnames of executable files to avoid searching the PATH time and time
    400399again to find the same executable. However, we'd like the new tools to be
    401400used as soon as they are installed. By switching off the hash function, our
    402 "interactive" commands (<userinput>make</userinput>,
    403 <userinput>patch</userinput>, <userinput>sed</userinput>,
    404 <userinput>cp</userinput> and so forth) will always use
     401"interactive" commands (<command>make</command>,
     402<command>patch</command>, <command>sed</command>,
     403<command>cp</command> and so forth) will always use
    405404the newest available version during the build process.</para>
    406405
     
    520519You will need to investigate and retrace your steps to find out where the
    521520problem is and correct it. There is no point in continuing until this is done.
    522 First, redo the sanity check using <userinput>gcc</userinput> instead of
    523 <userinput>cc</userinput>. If this works it means the
     521First, redo the sanity check using <command>gcc</command> instead of
     522<command>cc</command>. If this works it means the
    524523<filename class="symlink">/tools/bin/cc</filename> symlink is missing. Revisit
    525524<xref linkend="ch-tools-gcc-pass1"/> and fix the symlink. Second, ensure your $PATH
     
    588587
    589588<para>Take care <emphasis>not</emphasis> to use
    590 <userinput>--strip-unneeded</userinput> on the libraries -- they would be
     589<emphasis>--strip-unneeded</emphasis> on the libraries -- they would be
    591590destroyed and you would have to build Glibc all over again.</para>
    592591
  • chapter05/gcc-pass1.xml

    rc288d97 r90e3cb3  
    4343<listitem><para><userinput>--with-local-prefix=/tools</userinput>: The
    4444purpose of this switch is to remove <filename>/usr/local/include</filename>
    45 from <userinput>gcc</userinput>'s include search path. This is not absolutely
     45from <command>gcc</command>'s include search path. This is not absolutely
    4646essential; however, we want to try to minimize the influence of the host
    4747system, thus making this a sensible thing to do.</para></listitem>
     
    5252having <filename>libgcc_eh.a</filename> available ensures that the configure
    5353script for Glibc (the next package we compile) produces the proper results.
    54 Note that the <userinput>gcc</userinput> binaries will still be linked
    55 statically, as this is controlled by the <userinput>-static</userinput>
     54Note that the <command>gcc</command> binaries will still be linked
     55statically, as this is controlled by the <command>-static</command>
    5656value of BOOT_LDFLAGS further on.</para></listitem>
    5757
     
    9393<para>As a finishing touch we'll create the <filename
    9494class="symlink">/tools/bin/cc</filename> symlink. Many programs and
    95 scripts run <userinput>cc</userinput> instead of <userinput>gcc</userinput>,
     95scripts run <command>cc</command> instead of <command>gcc</command>,
    9696a thing meant to keep programs generic and therefore usable on all kinds of
    9797Unix systems. Not everybody has the GNU C compiler installed. Simply running
    98 <userinput>cc</userinput> leaves the system administrator free to decide what
     98<command>cc</command> leaves the system administrator free to decide what
    9999C compiler to install, as long as there's a symlink pointing to it:</para>
    100100
  • chapter05/gcc-pass2.xml

    rc288d97 r90e3cb3  
    113113<screen><userinput>make</userinput></screen>
    114114
    115 <para>There is no need to use the <userinput>bootstrap</userinput> target now,
     115<para>There is no need to use the <emphasis>bootstrap</emphasis> target now,
    116116as the compiler we're using to compile this GCC was built from the exact same
    117117version of the GCC sources we used earlier.</para>
     
    124124<screen><userinput>make -k check</userinput></screen>
    125125
    126 <para>The <userinput>-k</userinput> flag is used to make the test suite run
     126<para>The <emphasis>-k</emphasis> flag is used to make the test suite run
    127127through to completion and not stop at the first failure. The GCC test suite is
    128128very comprehensive and is almost guaranteed to generate a few failures. To get
     
    143143 
    144144<para>The unexpected pass for g++ is due to the use of
    145 <userinput>--enable-__cxa_atexit</userinput>. Apparently not all platforms
     145<emphasis>--enable-__cxa_atexit</emphasis>. Apparently not all platforms
    146146supported by GCC have support for "__cxa_atexit" in their C libraries, so this
    147147test is not always expected to pass.</para>
    148148
    149149<para>The 24 unexpected passes for libstdc++ are due to the use of
    150 <userinput>--enable-clocale=gnu</userinput>, which is the correct choice on
     150<emphasis>--enable-clocale=gnu</emphasis>, which is the correct choice on
    151151Glibc-based systems of versions 2.2.5 and above. The underlying locale support
    152152in the GNU C library is superior to that of the otherwise selected "generic"
  • chapter05/glibc.xml

    rc288d97 r90e3cb3  
    5454
    5555<listitem><para><userinput>--without-gd</userinput>: This switch ensures
    56 that we don't build the <userinput>memusagestat</userinput> program, which
     56that we don't build the <command>memusagestat</command> program, which
    5757strangely enough insists on linking against the host's libraries (libgd,
    5858libpng, libz, and so forth).</para></listitem>
     
    123123could still occur -- the <emphasis>math</emphasis>
    124124tests for example. When experiencing a failure, make a note of it, then
    125 continue by reissuing the <userinput>make check</userinput>. The test suite
     125continue by reissuing the <command>make check</command>. The test suite
    126126should pick up where it left off and continue on. You can circumvent this
    127 stop-start sequence by issuing a <userinput>make -k check</userinput>. But if
     127stop-start sequence by issuing a <command>make -k check</command>. But if
    128128you do that, be sure to log the output so that you can later peruse the log
    129129file and examine the total number of failures.</para>
     
    157157<para>An alternative to running the previous command is to install only those
    158158locales which you need or want. This can be achieved by using the
    159 <userinput>localedef</userinput> command. Information on this can be found in
     159<command>localedef</command> command. Information on this can be found in
    160160the <filename>INSTALL</filename> file in the Glibc source. However, there are
    161161a number of locales that are essential for the tests of future packages to
  • chapter05/grep.xml

    rc288d97 r90e3cb3  
    2323<itemizedlist>
    2424<listitem><para><userinput>--disable-perl-regexp</userinput>: This makes sure
    25 that <userinput>grep</userinput> does not get linked against a PCRE library
     25that <command>grep</command> does not get linked against a PCRE library
    2626that may be present on the host and would not be available once we enter the
    2727chroot environment.</para></listitem>
  • chapter05/kernelheaders.xml

    rc288d97 r90e3cb3  
    1313<para>As some packages need to refer to the kernel header files, we're going
    1414to unpack the kernel archive now, set it up, and copy the required files to a
    15 place where <userinput>gcc</userinput> can later find them.</para>
     15place where <command>gcc</command> can later find them.</para>
    1616
    1717<para>Prepare for the header installation with:</para>
  • chapter05/patch.xml

    rc288d97 r90e3cb3  
    1818<screen><userinput>CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools</userinput></screen>
    1919
    20 <para>The preprocessor flag <userinput>-D_GNU_SOURCE</userinput> is only needed
     20<para>The preprocessor flag <emphasis>-D_GNU_SOURCE</emphasis> is only needed
    2121on the PowerPC platform. On other architectures you can leave it out.</para>
    2222
Note: See TracChangeset for help on using the changeset viewer.