Changes in / [f81a8a4:e8d4ea4]


Ignore:
Files:
2 added
49 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    rf81a8a4 re8d4ea4  
    3535endif
    3636
     37ifndef ARCH
     38  ARCH = default
     39endif
     40ifneq ($(ARCH), default)
     41  ifneq ($(ARCH), ml_32)
     42    ifneq ($(ARCH), ml_x32)
     43      ifneq ($(ARCH), ml_all)
     44        $(error ARCH must be either 'default' (default if unset), 'ml_32', 'ml_x32' or 'ml_all'.)
     45      endif
     46    endif
     47  endif
     48endif
     49
    3750book: validate profile-html
    3851        @echo "Generating chunked XHTML files at $(BASEDIR)/ ..."
     
    130143                --output $(RENDERTMP)/lfs-html2.xml   \
    131144                --stringparam profile.revision $(REV) \
     145                --stringparam profile.arch $(ARCH)    \
    132146                stylesheets/lfs-xsl/profile.xsl       \
    133147                index.xml
     
    177191        $(Q)xsltproc --nonet --xinclude                    \
    178192                --stringparam profile.revision $(REV) \
     193                --stringparam profile.arch $(ARCH)    \
    179194                --output $(RENDERTMP)/sysv-md5sum.xml \
    180195                stylesheets/lfs-xsl/profile.xsl       \
  • chapter01/askforhelp.xml

    rf81a8a4 re8d4ea4  
    3939    <itemizedlist>
    4040      <listitem>
    41         <para>The version of the book being used (in this case &version;)</para>
     41        <para>The version of the book being used (in this case &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase>)</para>
    4242      </listitem>
    4343      <listitem>
     
    5454      </listitem>
    5555      <listitem>
    56         <para>Note whether you have deviated from the book at all </para>
     56        <para>Note whether you have deviated from the book at all</para>
    5757      </listitem>
    5858    </itemizedlist>
  • chapter01/changelog.xml

    rf81a8a4 re8d4ea4  
    1111  <title>Changelog</title>
    1212
    13   <para>This is version &version; of the Linux From Scratch book, dated
     13  <para>This is version &version;<phrase arch="ml_32,ml_x32,ml_all">&version;-multilib</phrase> of the Linux From Scratch book, dated
    1414  &releasedate;. If this book is more than six months old, a newer and better
    1515  version is probably already available. To find out, please check one of the
  • chapter02/hostreqs.xml

    rf81a8a4 re8d4ea4  
    226226-->
    227227
     228    <para arch="ml_32,ml_x32,ml_all">
     229      Building multilib support requires the kernel of the host system
     230      to have 32-bit emulation support included.
     231    </para>
     232<screen arch="ml_32,ml_x32,ml_all">Binary Emulations  ---&gt;
     233    [*] IA32 Emulation
     234    &lt;M&gt;   IA32 a.out support
     235    [*] x32 ABI for 64-bit mode
     236</screen>
     237
     238    <para arch="ml_32,ml_x32,ml_all">The option 'IA32 a.out support' is
     239      optional. In case your kernel does not have 'x32 ABI for 64-bit mode'
     240      enabled but only 'IA32 Emulation', you can continue to build your
     241      system but you have to leave out any sections showing instructions
     242      for building x32 objects. If neither 'IA32 Emulation' nor
     243      'x32 ABI for 64-bit mode' is enabled, you will run in errors
     244      latest when building <application>glibc</application> in Chapter 6,
     245      so an upgrade of your host system kernel is required.
     246    </para>
     247   
    228248</sect1>
  • chapter03/packages.xml

    rf81a8a4 re8d4ea4  
    362362        <para>Download: <ulink url="&iproute2-url;"/></para>
    363363        <para>MD5 sum: <literal>&iproute2-md5;</literal></para>
     364      </listitem>
     365    </varlistentry>
     366
     367    <varlistentry arch="ml_32,ml_x32,ml_all">
     368      <term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
     369      <listitem>
     370        <para>Home page: <ulink url="&isl-home;"/></para>
     371        <para>Download: <ulink url="&isl-url;"/></para>
     372        <para>MD5 sum: <literal>&isl-md5;</literal></para>
    364373      </listitem>
    365374    </varlistentry>
  • chapter04/addinguser.xml

    rf81a8a4 re8d4ea4  
    8585  x86_64) chown -v lfs $LFS/lib64 ;;
    8686esac</userinput></screen>
     87<screen arch="ml_32"  ><userinput>chown -v lfs $LFS/lib32</userinput></screen>
     88<screen arch="ml_x32" ><userinput>chown -v lfs $LFS/libx32</userinput></screen>
     89<screen arch="ml_all" ><userinput>chown -v lfs $LFS/{lib32,libx32}</userinput></screen>
    8790
    8891  <note><para>In some host systems, the following command does not complete
  • chapter04/creatingminlayout.xml

    rf81a8a4 re8d4ea4  
    3030  x86_64) mkdir -pv $LFS/lib64 ;;
    3131esac</userinput></screen>
     32<screen arch="ml_32"><userinput>mkdir -pv $LFS/usr/lib32
     33ln -sv usr/lib32 $LFS/lib32</userinput></screen>
     34<screen arch="ml_x32"><userinput>mkdir -pv $LFS/usr/libx32
     35ln -sv usr/libx32 $LFS/libx32</userinput></screen>
     36<screen arch="ml_all"><userinput>mkdir -pv $LFS/usr/lib{,x}32
     37ln -sv usr/lib32 $LFS/lib32
     38ln -sv usr/libx32 $LFS/libx32</userinput></screen>
    3239
    3340  <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
  • chapter04/settingenviron.xml

    rf81a8a4 re8d4ea4  
    3838  <filename>.bashrc</filename> file now:</para>
    3939
    40 <screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     40<screen arch="default"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
    4141<literal>set +h
    4242umask 022
     
    4949CONFIG_SITE=$LFS/usr/share/config.site
    5050export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</literal>
     51EOF</userinput></screen>
     52<screen arch="ml_32,ml_x32,ml_all"><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     53<literal>set +h
     54umask 022
     55LFS=/mnt/lfs
     56LC_ALL=POSIX
     57LFS_TGT=x86_64-lfs-linux-gnu
     58LFS_TGT32=i686-lfs-linux-gnu
     59LFS_TGTX32=x86_64-lfs-linux-gnux32
     60PATH=/usr/bin
     61if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
     62PATH=$LFS/tools/bin:$PATH
     63CONFIG_SITE=$LFS/usr/share/config.site
     64export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH</literal>
    5165EOF</userinput></screen>
    5266
  • chapter05/binutils-pass1.xml

    rf81a8a4 re8d4ea4  
    7171    <para>Now prepare Binutils for compilation:</para>
    7272
    73     <screen><userinput remap="configure">../configure --prefix=$LFS/tools \
     73    <screen arch="default"><userinput remap="configure">../configure --prefix=$LFS/tools \
    7474             --with-sysroot=$LFS \
    7575             --target=$LFS_TGT   \
    7676             --disable-nls       \
    7777             --disable-werror</userinput></screen>
     78<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=$LFS/tools       \
     79             --with-sysroot=$LFS \
     80             --target=$LFS_TGT   \
     81             --disable-nls       \
     82             --disable-werror    \
     83             --enable-multilib</userinput></screen>
    7884
    7985    <variablelist>
     
    124130      </varlistentry>
    125131
     132      <varlistentry arch="ml_32,ml_x32,ml_all">
     133        <term><parameter>--enable-multilib</parameter></term>
     134        <listitem>
     135          <para>Enables multilib support.</para>
     136        </listitem>
     137      </varlistentry>
     138
    126139    </variablelist>
    127140
  • chapter05/gcc-pass1.xml

    rf81a8a4 re8d4ea4  
    6363mv -v mpc-&mpc-version; mpc</userinput></screen>
    6464
    65     <para>On x86_64 hosts, set the default directory name for
     65    <para arch="default">On x86_64 hosts, set the default directory name for
    6666    64-bit libraries to <quote>lib</quote>:</para>
    6767
    68 <screen><userinput remap="pre">case $(uname -m) in
     68<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6969  x86_64)
    7070    sed -e '/m64=/s/lib64/lib/' \
     
    7373esac</userinput></screen>
    7474
     75    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for
     76    libraries:</para>
     77
     78<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     79    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     80    -i.orig gcc/config/i386/t-linux64
     81</userinput></screen>
     82
    7583    <para>The GCC documentation recommends building GCC
    7684    in a dedicated build directory:</para>
     
    8189    <para>Prepare GCC for compilation:</para>
    8290
    83 <screen><userinput remap="configure">../configure                  \
     91<screen arch="default"><userinput remap="configure">../configure                  \
    8492    --target=$LFS_TGT         \
    8593    --prefix=$LFS/tools       \
     
    100108    --disable-libstdcxx       \
    101109    --enable-languages=c,c++</userinput></screen>
     110<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     111    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
     112    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     113    arch="ml_all">mlist=m64,m32,mx32</userinput>
     114<userinput remap="configure">../configure                  \
     115    --target=$LFS_TGT                              \
     116    --prefix=$LFS/tools                            \
     117    --with-glibc-version=&glibc-version;                      \
     118    --with-sysroot=$LFS                            \
     119    --with-newlib                                  \
     120    --without-headers                              \
     121    --enable-initfini-array                        \
     122    --disable-nls                                  \
     123    --disable-shared                               \
     124    --enable-multilib --with-multilib-list=$mlist  \
     125    --disable-decimal-float                        \
     126    --disable-threads                              \
     127    --disable-libatomic                            \
     128    --disable-libgomp                              \
     129    --disable-libquadmath                          \
     130    --disable-libssp                               \
     131    --disable-libvtv                               \
     132    --disable-libstdcxx                            \
     133    --enable-languages=c,c++</userinput></screen>
     134
    102135    <variablelist>
    103136      <title>The meaning of the configure options:</title>
     
    142175      </varlistentry>
    143176
    144       <varlistentry>
     177      <varlistentry arch="default">
    145178        <term><parameter>--disable-multilib</parameter></term>
    146179        <listitem>
    147180          <para>On x86_64, LFS does not support a multilib configuration.
    148181          This switch is harmless for x86.</para>
     182        </listitem>
     183      </varlistentry>
     184      <varlistentry arch="ml_32,ml_x32,ml_all">
     185        <term><parameter>--enable-multilib --with-multilib-list=...</parameter></term>
     186        <listitem>
     187          <para>LFS canbe used to support multilib. Which they are is
     188          specified in the multilib list.</para>
    149189        </listitem>
    150190      </varlistentry>
  • chapter05/glibc.xml

    rf81a8a4 re8d4ea4  
    4848    operation of the dynamic library loader:</para>
    4949
    50 <screen><userinput remap="pre">case $(uname -m) in
     50<screen arch="default"><userinput remap="pre">case $(uname -m) in
    5151    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
    5252    ;;
     
    5555    ;;
    5656esac</userinput></screen>
     57<!-- no ld-linux.so.2 here as multilib is based on x86_64, not on i686 -->
     58<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
     59ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen>
    5760
    5861    <note>
     
    8689    <para>Next, prepare Glibc for compilation:</para>
    8790
    88 <screen><userinput remap="configure">../configure                             \
     91<screen arch="default"><userinput remap="configure">../configure                             \
    8992      --prefix=/usr                      \
    9093      --host=$LFS_TGT                    \
     
    9295      --enable-kernel=&min-kernel;                \
    9396      --with-headers=$LFS/usr/include    \
     97      libc_cv_slibdir=/usr/lib</userinput></screen>
     98<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                             \
     99      --prefix=/usr                      \
     100      --host=$LFS_TGT                    \
     101      --build=$(../scripts/config.guess) \
     102      --enable-kernel=&min-kernel;                \
     103      --with-headers=$LFS/usr/include    \
     104      --enable-multi-arch                \
    94105      libc_cv_slibdir=/usr/lib</userinput></screen>
    95106
     
    205216<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    206217
    207       <para>Note that for 32-bit machines, the interpreter name will be
     218      <para arch="default">Note that for 32-bit machines, the interpreter name will be
    208219      <filename>/lib/ld-linux.so.2</filename>.</para>
    209220
     
    233244  </sect2>
    234245
     246  <!-- - - - - - - - - - -->
     247  <!-- Multilib - 32bit  -->
     248  <!-- - - - - - - - - - -->
     249  <sect2 arch="ml_32,ml_all">
     250    <title>Building Glibc - 32bit</title>
     251
     252    <para>Now recompile for m32. The extracted source can be
     253    reused but needs to be cleaned before installing the m32
     254    version of Glibc.</para>
     255
     256    <para>Clear the build directory and remove artefacts from
     257    previous build:</para>
     258     
     259<screen><userinput remap="pre">make clean
     260find .. -name "*.a" -delete</userinput></screen>
     261
     262    <para>Configure Glibc for m32 with the following commands:</para>
     263
     264<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
     265CXX="$LFS_TGT-g++ -m32" \
     266../configure                             \
     267      --prefix=/usr                      \
     268      --host=$LFS_TGT32                  \
     269      --build=$(../scripts/config.guess) \
     270      --enable-kernel=&min-kernel;                \
     271      --with-headers=$LFS/usr/include    \
     272      --enable-multi-arch                \
     273      --libdir=/usr/lib32                \
     274      --libexecdir=/usr/lib32            \
     275      libc_cv_slibdir=/usr/lib32</userinput></screen>
     276
     277    <para>Compile the package:</para>
     278
     279<screen><userinput remap="make">make</userinput></screen>
     280
     281    <para>Install the package:</para>
     282
     283<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     284cp -a DESTDIR/usr/lib32 $LFS/usr/
     285install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
     286               $LFS/usr/include/gnu/
     287ln -svf ../lib32/ld-linux.so.2 $LFS/lib/ld-linux.so.2</userinput></screen>
     288
     289
     290    <caution>
     291      <para>At this point, it is imperative to stop and ensure that the basic
     292      functions (compiling and linking) of the new toolchain are working as
     293      expected. To perform a sanity check, run the following commands:</para>
     294
     295<screen><userinput>echo 'int main(){}' &gt; dummy.c
     296$LFS_TGT-gcc -m32 dummy.c
     297readelf -l a.out | grep '/ld-linux'</userinput></screen>
     298
     299      <para>If everything is working correctly, there should be no errors,
     300      and the output of the last command will be of the form:</para>
     301
     302<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     303
     304      <para>If the output is not shown as above or there was no output at all,
     305      then something is wrong. Investigate and retrace the steps to find out
     306      where the problem is and correct it. This issue must be resolved before
     307      continuing on.</para>
     308
     309      <para>Once all is well, clean up the test files:</para>
     310
     311<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     312
     313    </caution>
     314
     315  </sect2><!-- m32 -->
     316
     317  <!-- - - - - - - - - - -->
     318  <!-- Multilib - x32bit -->
     319  <!-- - - - - - - - - - -->
     320 
     321  <sect2 arch="ml_x32,ml_all">
     322    <title>Building Glibc - x32bit</title>
     323
     324    <para>Now recompile for mx32. The extracted source can be
     325    reused but needs to be cleaned before installing the mx32
     326    version of Glibc.</para>
     327
     328    <para>Clear the build directory and remove artefacts from
     329    previous build:</para>
     330     
     331<screen><userinput remap="pre">make clean
     332find .. -name "*.a" -delete</userinput></screen>
     333
     334    <para>Configure Glibc for mx32 with the following commands:</para>
     335
     336<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
     337CXX="$LFS_TGT-g++ -mx32" \
     338../configure                             \
     339      --prefix=/usr                      \
     340      --host=$LFS_TGTX32                 \
     341      --build=$(../scripts/config.guess) \
     342      --enable-kernel=&min-kernel;                \
     343      --with-headers=$LFS/usr/include    \
     344      --enable-multi-arch                \
     345      --libdir=/usr/libx32               \
     346      --libexecdir=/usr/libx32           \
     347      libc_cv_slibdir=/usr/libx32</userinput></screen>
     348
     349    <para>Compile the package:</para>
     350
     351<screen><userinput remap="make">make</userinput></screen>
     352
     353    <para>Install the package:</para>
     354
     355<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     356cp -a DESTDIR/usr/libx32 $LFS/usr/
     357install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
     358               $LFS/usr/include/gnu/
     359ln -svf ../libx32/ld-linux-x32.so.2 $LFS/lib/ld-linux-x32.so.2</userinput></screen>
     360
     361    <caution>
     362      <para>At this point, it is imperative to stop and ensure that the basic
     363      functions (compiling and linking) of the new toolchain are working as
     364      expected. To perform a sanity check, run the following commands:</para>
     365
     366<screen><userinput>echo 'int main(){}' &gt; dummy.c
     367$LFS_TGT-gcc -mx32 dummy.c
     368readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
     369
     370      <para>If everything is working correctly, there should be no errors,
     371      and the output of the last command will be of the form:</para>
     372
     373<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
     374
     375      <para>If the output is not shown as above or there was no output at all,
     376      then something is wrong. Investigate and retrace the steps to find out
     377      where the problem is and correct it. This issue must be resolved before
     378      continuing on.</para>
     379
     380      <para>Once all is well, clean up the test files:</para>
     381
     382<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     383
     384    </caution>
     385
     386  </sect2><!-- mx32 -->
     387
    235388  <sect2 role="content">
    236389    <title/>
  • chapter05/libstdc++.xml

    rf81a8a4 re8d4ea4  
    6161    <para>Prepare libstdc++ for compilation:</para>
    6262
    63 <screen><userinput remap="configure">../libstdc++-v3/configure           \
     63<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../libstdc++-v3/configure           \
     64    --host=$LFS_TGT                 \
     65    --build=$(../config.guess)      \
     66    --prefix=/usr                   \
     67    --enable-multilib               \
     68    --disable-nls                   \
     69    --disable-libstdcxx-pch         \
     70    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</userinput></screen>
     71<screen arch="default"><userinput remap="configure">../libstdc++-v3/configure           \
    6472    --host=$LFS_TGT                 \
    6573    --build=$(../config.guess)      \
     
    7987          should be used instead of the one in
    8088          <filename>/usr/bin</filename>.</para>
     89        </listitem>
     90      </varlistentry>
     91
     92      <varlistentry arch="ml_32,ml_x32,ml_all">
     93        <term><parameter>--enable-multilib</parameter></term>
     94        <listitem>
     95          <para>Enable building multilib objects.</para>
    8196        </listitem>
    8297      </varlistentry>
  • chapter06/binutils-pass2.xml

    rf81a8a4 re8d4ea4  
    5959    <para>Prepare Binutils for compilation:</para>
    6060
    61 <screen><userinput remap="configure">../configure                   \
     61<screen arch="default"><userinput remap="configure">../configure                   \
    6262    --prefix=/usr              \
    6363    --build=$(../config.guess) \
     
    6767    --disable-werror           \
    6868    --enable-64-bit-bfd</userinput></screen>
     69<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                   \
     70    --prefix=/usr              \
     71    --build=$(../config.guess) \
     72    --host=$LFS_TGT            \
     73    --disable-nls              \
     74    --enable-shared            \
     75    --disable-werror           \
     76    --enable-64-bit-bfd        \
     77    --enable-multilib</userinput></screen>
    6978
    7079    <variablelist>
     
    8594          <para>Enables 64-bit support (on hosts with narrower word sizes).
    8695          May not be needed on 64-bit systems, but does no harm.</para>
     96        </listitem>
     97      </varlistentry>
     98
     99      <varlistentry arch="ml_32,ml_x32,ml_all">
     100        <term><parameter>--enable-multilib</parameter></term>
     101        <listitem>
     102          <para>Enables multilib support in bintutils.</para>
    87103        </listitem>
    88104      </varlistentry>
  • chapter06/gcc-pass2.xml

    rf81a8a4 re8d4ea4  
    5555mv -v mpc-&mpc-version; mpc</userinput></screen>
    5656
    57     <para>If building on x86_64, change the default directory name for 64-bit
     57
     58    <para arch="default">If building on x86_64, change the default directory name for 64-bit
    5859    libraries to <quote>lib</quote>:</para>
    5960
    60 <screen><userinput remap="pre">case $(uname -m) in
     61<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6162  x86_64)
    6263    sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
     
    6465esac</userinput></screen>
    6566
     67    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for the
     68    libraries:</para>
     69
     70<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     71    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     72    -i.orig gcc/config/i386/t-linux64</userinput></screen>
     73
    6674    <para>Override the building rule of libgcc and libstdc++ headers, to
    6775    allow building these libraries with POSIX threads support:</para>
     
    8088    <para>Now prepare GCC for compilation:</para>
    8189
    82 <screen><userinput remap="configure">../configure                                       \
     90<screen arch="default"><userinput remap="configure">../configure                                       \
    8391    --build=$(../config.guess)                     \
    8492    --host=$LFS_TGT                                \
     
    97105    --disable-libvtv                               \
    98106    --enable-languages=c,c++</userinput></screen>
    99 
     107<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     108    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
     109    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     110    arch="ml_all">mlist=m64,m32,mx32</userinput>
     111<userinput remap="configure">../configure                                       \
     112    --build=$(../config.guess)                     \
     113    --host=$LFS_TGT                                \
     114    --target=$LFS_TGT                              \
     115    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
     116    --prefix=/usr                                  \
     117    --with-build-sysroot=$LFS                      \
     118    --enable-initfini-array                        \
     119    --disable-nls                                  \
     120    --enable-multilib --with-multilib-list=$mlist  \
     121    --disable-decimal-float                        \
     122    --disable-libatomic                            \
     123    --disable-libgomp                              \
     124    --disable-libquadmath                          \
     125    --disable-libssp                               \
     126    --disable-libvtv                               \
     127    --enable-languages=c,c++</userinput></screen>
     128<!--
     129    LDFLAGS_FOR_TARGET="-L$PWD/$LFS_TGT/libgcc -L$PWD/$LFS_TGT/32/libgcc -L$PWD/$LFS_TGT/x32/libgcc" \
     130-->
    100131    <variablelist>
    101132      <title>The meaning of the new configure options:</title><!-- WIP -->
  • chapter06/ncurses.xml

    rf81a8a4 re8d4ea4  
    166166  </sect2>
    167167
     168  <!-- - - - - - - - - - -->
     169  <!-- Multilib - 32bit  -->
     170  <!-- - - - - - - - - - -->
     171  <sect2 arch="ml_32,ml_all">
     172    <title>Building Ncurses - 32bit</title>
     173
     174    <para>Clean previous build:</para>
     175
     176<screen><userinput remap="pre">make distclean</userinput></screen>
     177
     178    <para>Prepare Ncurses for compilation:</para>
     179
     180<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32"              \
     181CXX="$LFS_TGT-g++ -m32"             \
     182./configure --prefix=/usr           \
     183            --host=$LFS_TGT32       \
     184            --build=$(./config.guess)    \
     185            --libdir=/usr/lib32     \
     186            --mandir=/usr/share/man \
     187            --with-shared           \
     188            --without-debug         \
     189            --without-ada           \
     190            --without-normal        \
     191            --disable-stripping     \
     192            --enable-widec</userinput></screen>
     193
     194    <para>Compile the package:</para>
     195
     196<screen><userinput remap="make">make</userinput></screen>
     197
     198    <para>Install the package:</para>
     199
     200<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     201ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so
     202cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
     203rm -rf DESTDIR</userinput></screen>
     204
     205  </sect2><!-- m32 -->
     206
     207  <!-- - - - - - - - - - -->
     208  <!-- Multilib - x32bit -->
     209  <!-- - - - - - - - - - -->
     210  <sect2 arch="ml_x32,ml_all">
     211    <title>Building Ncurses - x32bit</title>
     212
     213    <para>Clean previous build:</para>
     214
     215<screen><userinput remap="pre">make distclean</userinput></screen>
     216
     217    <para>Prepare Ncurses for compilation:</para>
     218
     219<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32"             \
     220CXX="$LFS_TGT-g++ -mx32"            \
     221./configure --prefix=/usr           \
     222            --host=$LFS_TGTX32      \
     223            --build=$(./config.guess)    \
     224            --libdir=/usr/libx32    \
     225            --mandir=/usr/share/man \
     226            --with-shared           \
     227            --without-debug         \
     228            --without-ada           \
     229            --without-normal        \
     230            --disable-stripping     \
     231            --enable-widec</userinput></screen>
     232
     233    <para>Compile the package:</para>
     234
     235<screen><userinput remap="make">make</userinput></screen>
     236
     237    <para>Install the package:</para>
     238
     239<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     240ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so
     241cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
     242rm -rf DESTDIR</userinput></screen>
     243
     244  </sect2><!-- mx32 -->
     245
    168246  <sect2 role="content">
    169247    <title/>
  • chapter07/changingowner.xml

    rf81a8a4 re8d4ea4  
    3939esac</userinput></screen>
    4040
     41  <para arch="ml_32,ml_x32,ml_all">Some more directories exists for
     42  multilib support. Change their ownership, too:</para>
     43<screen arch="ml_32,ml_x32,ml_all"><userinput arch="ml_32,ml_all">chown -R root:root $LFS/lib32</userinput>
     44<userinput arch="ml_x32,ml_all">chown -R root:root $LFS/libx32</userinput></screen>
     45 
    4146</sect1>
  • chapter07/cleanup.xml

    rf81a8a4 re8d4ea4  
    2424    While still in chroot, remove those files now:</para>
    2525
    26 <screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
     26<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput><userinput arch="ml_32">
     27find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32">
     28find /usr/libx32 -name \*.la -delete</userinput><userinput arch="ml_all">
     29find /usr/lib{,x}32 -name \*.la -delete</userinput></screen>
    2730
    2831    <para>
  • chapter07/creatingdirs.xml

    rf81a8a4 re8d4ea4  
    4242install -dv -m 1777 /tmp /var/tmp</userinput></screen>
    4343
     44  <para arch="ml_32,ml_x32,ml_all">Required directories for multilib
     45  support has already been created while previous installation steps.</para>
     46
    4447  <para>Directories are, by default, created with permission mode 755, but
    4548  this is not desirable for all directories. In the commands above, two
  • chapter07/util-linux.xml

    rf81a8a4 re8d4ea4  
    127127  </sect2>
    128128
     129  <!-- - - - - - - - - - -->
     130  <!-- Multilib - 32bit  -->
     131  <!-- - - - - - - - - - -->
     132 
     133  <sect2 arch="ml_32,ml_all" role="installation">
     134    <title>Installation of Util-linux - 32-bit</title>
     135
     136    <para>Clean previous build:</para>
     137
     138<screen><userinput remap="pre">make distclean</userinput></screen>
     139
     140    <para>Prepare Util-linux for compilation:</para>
     141
     142<screen><userinput remap="configure">CC="gcc -m32" \
     143./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
     144            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     145            --disable-chfn-chsh  \
     146            --disable-login      \
     147            --disable-nologin    \
     148            --disable-su         \
     149            --disable-setpriv    \
     150            --disable-runuser    \
     151            --disable-pylibmount \
     152            --disable-static     \
     153            --without-python     \
     154            --libdir=/usr/lib32      \
     155            --host=i686-pc-linux-gnu</userinput></screen>
     156
     157    <para>Compile the package:</para>
     158
     159<screen><userinput remap="make">make</userinput></screen>
     160
     161    <para>Install the package:</para>
     162
     163<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     164cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     165rm -rf DESTDIR</userinput></screen>
     166
     167  </sect2><!-- m32 -->
     168
     169  <!-- - - - - - - - - - -->
     170  <!-- Multilib - x32bit -->
     171  <!-- - - - - - - - - - -->
     172 
     173  <sect2 arch="ml_x32,ml_all" role="installation">
     174    <title>Installation of Util-linux - x32-bit</title>
     175
     176    <para>Clean previous build:</para>
     177
     178<screen><userinput remap="pre">make distclean</userinput></screen>
     179
     180    <para>Prepare Util-linux for compilation:</para>
     181
     182<screen><userinput remap="configure">CC="gcc -mx32" \
     183./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
     184            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     185            --disable-chfn-chsh  \
     186            --disable-login      \
     187            --disable-nologin    \
     188            --disable-su         \
     189            --disable-setpriv    \
     190            --disable-runuser    \
     191            --disable-pylibmount \
     192            --disable-static     \
     193            --without-python     \
     194            --libdir=/usr/libx32 \
     195            --host=x86_64-pc-linux-gnux32</userinput></screen>
     196
     197    <para>Compile the package:</para>
     198
     199<screen><userinput remap="make">make</userinput></screen>
     200
     201    <para>Install the package:</para>
     202
     203<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     204cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     205rm -rf DESTDIR</userinput></screen>
     206
     207  </sect2><!-- mx32 -->
     208
    129209  <sect2 role="content">
    130210    <title/>
  • chapter08/acl.xml

    rf81a8a4 re8d4ea4  
    6464
    6565  </sect2>
     66
     67  <!-- - - - - - - - - - -->
     68  <!-- Multilib - 32bit  -->
     69  <!-- - - - - - - - - - -->
     70 
     71  <sect2 arch="ml_32,ml_all" role="installation">
     72    <title>Installation of Acl - 32bit</title>
     73
     74    <para>Clean previous build:</para>
     75
     76<screen><userinput remap="pre">make distclean</userinput></screen>
     77
     78    <para>Prepare Xz for compilation:</para>
     79
     80<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     81    --prefix=/usr         \
     82    --disable-static      \
     83    --libdir=/usr/lib32   \
     84    --libexecdir=/usr/lib32   \
     85    --host=i686-pc-linux-gnu</userinput></screen>
     86
     87    <para>Compile the package:</para>
     88
     89<screen><userinput remap="make">make</userinput></screen>
     90
     91    <para>Install the package:</para>
     92
     93<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     94cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     95rm -rf DESTDIR</userinput></screen>
     96
     97  </sect2><!-- m32 -->
     98
     99  <!-- - - - - - - - - - -->
     100  <!-- Multilib - x32bit -->
     101  <!-- - - - - - - - - - -->
     102 
     103  <sect2 arch="ml_x32,ml_all" role="installation">
     104    <title>Installation of Acl - x32bit</title>
     105
     106    <para>Clean previous build:</para>
     107
     108<screen><userinput remap="pre">make distclean</userinput></screen>
     109
     110    <para>Prepare Xz for compilation:</para>
     111
     112<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     113    --prefix=/usr          \
     114    --disable-static       \
     115    --libdir=/usr/libx32   \
     116    --libexecdir=/usr/libx32   \
     117    --host=x86_64-pc-linux-gnux32</userinput></screen>
     118
     119    <para>Compile the package:</para>
     120
     121<screen><userinput remap="make">make</userinput></screen>
     122
     123    <para>Install the package:</para>
     124
     125<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     126cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     127rm -rf DESTDIR</userinput></screen>
     128
     129  </sect2><!-- mx32 -->
    66130
    67131  <sect2 id="contents-acl" role="content">
  • chapter08/attr.xml

    rf81a8a4 re8d4ea4  
    6565  </sect2>
    6666
     67  <!-- - - - - - - - - - -->
     68  <!-- Multilib - 32bit  -->
     69  <!-- - - - - - - - - - -->
     70 
     71  <sect2 arch="ml_32,ml_all" role="installation">
     72    <title>Installation of Attr - 32bit</title>
     73
     74    <para>Clean previous build:</para>
     75
     76<screen><userinput remap="pre">make distclean</userinput></screen>
     77
     78    <para>Prepare Attr for compilation:</para>
     79
     80<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     81    --prefix=/usr         \
     82    --disable-static      \
     83    --libdir=/usr/lib32 \
     84    --host=i686-pc-linux-gnu</userinput></screen>
     85
     86    <para>Compile the package:</para>
     87
     88<screen><userinput remap="make">make</userinput></screen>
     89
     90    <para>Install the package:</para>
     91
     92<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     93cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     94rm -rf DESTDIR</userinput></screen>
     95
     96  </sect2><!-- m32 -->
     97
     98  <!-- - - - - - - - - - -->
     99  <!-- Multilib - x32bit -->
     100  <!-- - - - - - - - - - -->
     101 
     102  <sect2 arch="ml_x32,ml_all" role="installation">
     103    <title>Installation of Attr - x32bit</title>
     104
     105    <para>Clean previous build:</para>
     106
     107<screen><userinput remap="pre">make distclean</userinput></screen>
     108
     109    <para>Prepare Attr for compilation:</para>
     110
     111<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     112    --prefix=/usr          \
     113    --disable-static       \
     114    --libdir=/usr/libx32   \
     115    --host=x86_64-pc-linux-gnux32</userinput></screen>
     116
     117    <para>Compile the package:</para>
     118
     119<screen><userinput remap="make">make</userinput></screen>
     120
     121    <para>Install the package:</para>
     122
     123<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     124cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     125rm -rf DESTDIR</userinput></screen>
     126
     127  </sect2><!-- mx32 -->
     128
    67129  <sect2 id="contents-attr" role="content">
    68130    <title>Contents of Attr</title>
  • chapter08/binutils.xml

    rf81a8a4 re8d4ea4  
    8888    <para>Prepare Binutils for compilation:</para>
    8989
    90 <screen><userinput remap="configure">../configure --prefix=/usr       \
     90<screen arch="default"><userinput remap="configure">../configure --prefix=/usr       \
    9191             --enable-gold       \
    9292             --enable-ld=default \
     
    9696             --enable-64-bit-bfd \
    9797             --with-system-zlib</userinput></screen>
     98<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr       \
     99             --enable-gold       \
     100             --enable-ld=default \
     101             --enable-plugins    \
     102             --enable-shared     \
     103             --disable-werror    \
     104             --enable-64-bit-bfd \
     105             --with-system-zlib  \
     106             --enable-multilib</userinput></screen>
     107
    98108    <variablelist>
    99109      <title>The meaning of the configure parameters:</title>
     
    127137           <para>Enables 64-bit support (on hosts with narrower word sizes).
    128138           May not be needed on 64-bit systems, but does no harm.</para>
     139        </listitem>
     140      </varlistentry>
     141
     142      <varlistentry arch="ml_32,ml_x32,ml_all">
     143        <term><parameter>--enable-multilib</parameter></term>
     144        <listitem>
     145          <para>Enables multilib support in bintutils.</para>
    129146        </listitem>
    130147      </varlistentry>
  • chapter08/bzip2.xml

    rf81a8a4 re8d4ea4  
    103103
    104104  </sect2>
     105
     106  <!-- - - - - - - - - - -->
     107  <!-- Multilib - 32bit  -->
     108  <!-- - - - - - - - - - -->
     109 
     110  <sect2 arch="ml_32,ml_all" role="installation">
     111    <title>Installation of Bzip2 - 32bit</title>
     112
     113    <para>Clean previous build:</para>
     114
     115<screen><userinput remap="pre">make clean</userinput></screen>
     116
     117    <para>Compile the package:</para>
     118
     119<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -m32/" -i Makefile{,-libbz2_so}
     120make -f Makefile-libbz2_so
     121make libbz2.a</userinput></screen>
     122
     123    <para>Install the package:</para>
     124
     125<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0.8
     126ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so
     127ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1
     128ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0
     129install -Dm644 libbz2.a /usr/lib32/libbz2.a</userinput></screen>
     130
     131  </sect2><!-- m32 -->
     132
     133  <!-- - - - - - - - - - -->
     134  <!-- Multilib - x32bit -->
     135  <!-- - - - - - - - - - -->
     136 
     137  <sect2 arch="ml_x32,ml_all" role="installation">
     138    <title>Installation of Bzip2 - x32bit</title>
     139
     140    <para>Clean previous build:</para>
     141
     142<screen><userinput remap="pre">make clean</userinput></screen>
     143
     144    <para>Compile the package:</para>
     145
     146<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -mx32/" -i Makefile{,-libbz2_so}
     147make -f Makefile-libbz2_so
     148make libbz2.a</userinput></screen>
     149
     150    <para>Install the package:</para>
     151
     152<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0.8
     153ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so
     154ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1
     155ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0
     156install -Dm644 libbz2.a /usr/libx32/libbz2.a</userinput></screen>
     157
     158  </sect2><!-- mx32 -->
    105159
    106160  <sect2 id="contents-bzip2" role="content">
  • chapter08/chapter08.xml

    rf81a8a4 re8d4ea4  
    3535  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
    3636  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
     37  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/>
    3738  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
    3839  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
  • chapter08/cleanup.xml

    rf81a8a4 re8d4ea4  
    2222  To remove them, run:</para>
    2323
    24 <screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen>
     24<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput><userinput arch="ml_32,ml_all">
     25find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32,ml_all">
     26find /usr/libx32 -name \*.la -delete</userinput></screen>
    2527
    2628   <para>For more information about libtool archive files, see the <ulink
  • chapter08/eudev.xml

    rf81a8a4 re8d4ea4  
    8585  </sect2>
    8686
     87  <!-- - - - - - - - - - -->
     88  <!-- Multilib - 32bit  -->
     89  <!-- - - - - - - - - - -->
     90 
     91  <sect2 arch="ml_32,ml_all" role="installation">
     92    <title>Installation of Eudev - 32bit</title>
     93
     94    <para>Clean previous build:</para>
     95
     96<screen><userinput remap="pre">make distclean</userinput></screen>
     97
     98    <para>Prepare Eudev for compilation:</para>
     99
     100<screen><userinput remap="configure">CC="gcc -m32" \
     101./configure --host=i686-pc-linux-gnu       \
     102            --prefix=/usr                  \
     103            --bindir=/usr/sbin             \
     104            --libdir=/usr/lib32            \
     105            --sysconfdir=/etc              \
     106            --disable-manpages             \
     107            --disable-static               \
     108            --config-cache</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- m32 -->
     121
     122  <!-- - - - - - - - - - -->
     123  <!-- Multilib - x32bit -->
     124  <!-- - - - - - - - - - -->
     125 
     126  <sect2 arch="ml_x32,ml_all" role="installation">
     127    <title>Installation of Eudev - x32bit</title>
     128
     129    <para>Clean previous build:</para>
     130
     131<screen><userinput remap="pre">make distclean</userinput></screen>
     132
     133    <para>Prepare Eudev for compilation:</para>
     134
     135<screen><userinput remap="configure">CC="gcc -mx32" \
     136./configure --host=x86_64-lfs-linux-gnux32 \
     137            --prefix=/usr                  \
     138            --bindir=/usr/sbin             \
     139            --libdir=/usr/libx32           \
     140            --sysconfdir=/etc              \
     141            --disable-manpages             \
     142            --disable-static               \
     143            --config-cache</userinput></screen>
     144
     145    <para>Compile the package:</para>
     146
     147<screen><userinput remap="make">make</userinput></screen>
     148
     149    <para>Install the package:</para>
     150
     151<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     152cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     153rm -rf DESTDIR</userinput></screen>
     154
     155  </sect2><!-- mx32 -->
     156
    87157  <sect2 id="conf-eudev" role="configuration">
    88158    <title>Configuring Eudev</title>
  • chapter08/expat.xml

    rf81a8a4 re8d4ea4  
    6666  </sect2>
    6767
     68  <!-- - - - - - - - - - -->
     69  <!-- Multilib - 32bit  -->
     70  <!-- - - - - - - - - - -->
     71 
     72  <sect2 arch="ml_32,ml_all" role="installation">
     73    <title>Installation of Expat - 32bit</title>
     74
     75    <para>Clean previous build but keep precompiled doc because it
     76    cannot be rebuilt in this stage of the system:</para>
     77
     78<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
     79make clean</userinput></screen>
     80
     81    <para>Prepare Expat for compilation:</para>
     82
     83<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     84    --prefix=/usr         \
     85    --libdir=/usr/lib32  \
     86    --host=i686-pc-linux-gnu</userinput></screen>
     87
     88    <para>Compile the package:</para>
     89
     90<screen><userinput remap="make">make</userinput></screen>
     91
     92    <para>Install the package:</para>
     93
     94<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     95cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     96rm -rf DESTDIR</userinput></screen>
     97
     98  </sect2><!-- m32 -->
     99
     100  <!-- - - - - - - - - - -->
     101  <!-- Multilib - x32bit -->
     102  <!-- - - - - - - - - - -->
     103 
     104  <sect2 arch="ml_x32,ml_all" role="installation">
     105    <title>Installation of Expat - x32bit</title>
     106
     107    <para>Clean previous build but keep precompiled doc because it
     108    cannot be rebuilt in this stage of the system:</para>
     109
     110<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
     111make clean</userinput></screen>
     112
     113    <para>Prepare Expat for compilation:</para>
     114
     115<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     116    --prefix=/usr         \
     117    --libdir=/usr/libx32 \
     118    --host=x86_64-pc-linux-gnux32</userinput></screen>
     119
     120    <para>Compile the package:</para>
     121
     122<screen><userinput remap="make">make</userinput></screen>
     123
     124    <para>Install the package:</para>
     125
     126<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     127cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     128rm -rf DESTDIR</userinput></screen>
     129
     130  </sect2><!-- mx32 -->
     131
    68132  <sect2 id="contents-expat" role="content">
    69133    <title>Contents of Expat</title>
  • chapter08/file.xml

    rf81a8a4 re8d4ea4  
    6060  </sect2>
    6161
     62  <!-- - - - - - - - - - -->
     63  <!-- Multilib - 32bit  -->
     64  <!-- - - - - - - - - - -->
     65 
     66  <sect2 arch="ml_32,ml_all" role="installation">
     67    <title>Installation of File - 32bit</title>
     68
     69    <para>Clean previous build:</para>
     70
     71<screen><userinput remap="pre">make distclean</userinput></screen>
     72
     73    <para>Prepare File for compilation:</para>
     74
     75<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     76    --prefix=/usr         \
     77    --libdir=/usr/lib32   \
     78    --host=i686-pc-linux-gnu</userinput></screen>
     79
     80    <para>Compile the package:</para>
     81
     82<screen><userinput remap="make">make</userinput></screen>
     83
     84    <para>Install the package:</para>
     85
     86<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     87cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     88rm -rf DESTDIR</userinput></screen>
     89
     90  </sect2><!-- m32 -->
     91
     92  <!-- - - - - - - - - - -->
     93  <!-- Multilib - x32bit -->
     94  <!-- - - - - - - - - - -->
     95 
     96  <sect2 arch="ml_x32,ml_all" role="installation">
     97    <title>Installation of File - x32bit</title>
     98
     99    <para>Clean previous build:</para>
     100
     101<screen><userinput remap="pre">make distclean</userinput></screen>
     102
     103    <para>Prepare File for compilation:</para>
     104
     105<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     106    --prefix=/usr          \
     107    --libdir=/usr/libx32   \
     108    --host=x86_64-pc-linux-gnux32</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- mx32 -->
    62121
    63122  <sect2 id="contents-file" role="content">
  • chapter08/gcc.xml

    rf81a8a4 re8d4ea4  
    5353    libraries to <quote>lib</quote>:</para>
    5454
    55 <screen><userinput remap="pre">case $(uname -m) in
     55<screen arch="default"><userinput remap="pre">case $(uname -m) in
    5656  x86_64)
    5757    sed -e '/m64=/s/lib64/lib/' \
     
    6060esac</userinput></screen>
    6161
     62    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for 64-bit
     63    libraries to <quote>lib</quote>:</para>
     64
     65<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     66    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     67    -i.orig gcc/config/i386/t-linux64</userinput></screen>
     68
    6269    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
    6370
     
    6774    <para>Prepare GCC for compilation:</para>
    6875
    69 <screen><userinput remap="configure">../configure --prefix=/usr            \
     76<screen arch="default"><userinput remap="configure">../configure --prefix=/usr            \
    7077             LD=ld                    \
    7178             --enable-languages=c,c++ \
    7279             --disable-multilib       \
    7380             --disable-bootstrap      \
     81             --with-system-zlib</userinput></screen>
     82<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     83  arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
     84  arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     85  arch="ml_all">mlist=m64,m32,mx32</userinput>
     86<userinput remap="configure">../configure --prefix=/usr               \
     87             LD=ld                       \
     88             --enable-languages=c,c++    \
     89             --enable-multilib           \
     90             --with-multilib-list=$mlist \
     91             --disable-bootstrap         \
    7492             --with-system-zlib</userinput></screen>
    7593
     
    243261SEARCH_DIR("/usr/lib");</computeroutput></screen>
    244262
    245    <para>A 32-bit system may see a few different directories. For example, here
     263   <para arch="default">A 32-bit system may see a few different directories. For example, here
    246264   is the output from an i686 machine:</para>
    247265
    248 <screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
     266<!-- not using entities here as the dir names has nothing to do with multilib -->
     267<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
    249268SEARCH_DIR("/usr/local/lib32")
    250269SEARCH_DIR("/lib32")
  • chapter08/glibc.xml

    rf81a8a4 re8d4ea4  
    7171    <para>Prepare Glibc for compilation:</para>
    7272
    73 <screen><userinput remap="configure">../configure --prefix=/usr                            \
     73<screen arch="default"><userinput remap="configure">../configure --prefix=/usr                            \
    7474             --disable-werror                         \
    7575             --enable-kernel=&min-kernel;                      \
    7676             --enable-stack-protector=strong          \
    7777             --with-headers=/usr/include              \
     78             libc_cv_slibdir=/usr/lib</userinput></screen>
     79<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr                            \
     80             --disable-werror                         \
     81             --enable-kernel=&min-kernel;                      \
     82             --enable-stack-protector=strong          \
     83             --with-headers=/usr/include              \
     84             --enable-multi-arch                      \
    7885             libc_cv_slibdir=/usr/lib</userinput></screen>
    7986
     
    478485  </sect2>
    479486
     487  <!-- - - - - - - - - - -->
     488  <!-- Multilib - 32bit  -->
     489  <!-- - - - - - - - - - -->
     490  <sect2 arch="ml_32,ml_all">
     491    <title>Building Glibc - 32bit</title>
     492
     493    <para>Now recompile for m32. The extracted source can be
     494    reused but needs to be cleaned before installing the m32
     495    version of Glibc.</para>
     496
     497    <para>Clear the build directory and remove artefacts from
     498    previous build:</para>
     499     
     500<screen><userinput remap="pre">rm -rf ./*
     501find .. -name "*.a" -delete</userinput></screen>
     502
     503    <para>Configure Glibc for m32 with the following commands:</para>
     504
     505<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
     506../configure                             \
     507      --prefix=/usr                      \
     508      --host=i686-pc-linux-gnu           \
     509      --build=$(../scripts/config.guess) \
     510      --enable-kernel=&min-kernel;                \
     511      --with-headers=/usr/include        \
     512      --enable-multi-arch                \
     513      --libdir=/usr/lib32                \
     514      --libexecdir=/usr/lib32            \
     515      libc_cv_slibdir=/usr/lib32</userinput></screen>
     516
     517    <para>Compile the package:</para>
     518
     519<screen><userinput remap="make">make</userinput></screen>
     520
     521    <para>Install the package:</para>
     522
     523<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     524cp -a DESTDIR/usr/lib32/* /usr/lib32/
     525install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
     526               /usr/include/gnu/</userinput></screen>
     527<!-- no longer required as they are created in chap5
     528ln -svf ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
     529-->
     530
     531    <para>Add the library name to the dynamic loader config:</para>
     532
     533<screen role="install"><userinput>echo "/usr/lib32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
     534
     535    <caution>
     536      <para>At this point, it is imperative to stop and ensure that the basic
     537      functions (compiling and linking) of the new toolchain are working as
     538      expected. To perform a sanity check, run the following commands:</para>
     539
     540<screen><userinput>echo 'int main(){}' &gt; dummy.c
     541gcc -m32 dummy.c
     542readelf -l a.out | grep '/ld-linux'</userinput></screen>
     543
     544      <para>If everything is working correctly, there should be no errors,
     545      and the output of the last command will be of the form:</para>
     546
     547<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     548
     549      <para>If the output is not shown as above or there was no output at all,
     550      then something is wrong. Investigate and retrace the steps to find out
     551      where the problem is and correct it. This issue must be resolved before
     552      continuing on.</para>
     553
     554      <para>Once all is well, clean up the test files:</para>
     555
     556<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     557
     558    </caution>
     559
     560  </sect2><!-- m32 -->
     561
     562  <!-- - - - - - - - - - -->
     563  <!-- Multilib - x32bit -->
     564  <!-- - - - - - - - - - -->
     565 
     566  <sect2 arch="ml_x32,ml_all">
     567    <title>Building Glibc - x32bit</title>
     568
     569    <para>Now recompile for mx32. The extracted source can be
     570    reused but needs to be cleaned before installing the mx32
     571    version of Glibc.</para>
     572
     573    <para>Clear the build directory and remove artefacts from
     574    previous build:</para>
     575     
     576<screen><userinput remap="pre">rm -rf ./*
     577find .. -name "*.a" -delete</userinput></screen>
     578
     579    <para>Configure Glibc for mx32 with the following commands:</para>
     580
     581<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
     582../configure                             \
     583      --prefix=/usr                      \
     584      --host=x86_64-pc-linux-gnux32      \
     585      --build=$(../scripts/config.guess) \
     586      --enable-kernel=&min-kernel;                \
     587      --with-headers=/usr/include        \
     588      --enable-multi-arch                \
     589      --libdir=/usr/libx32               \
     590      --libexecdir=/usr/libx32           \
     591      libc_cv_slibdir=/usr/libx32</userinput></screen>
     592
     593    <para>Compile the package:</para>
     594
     595<screen><userinput remap="make">make</userinput></screen>
     596
     597    <para>Install the package:</para>
     598
     599<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     600cp -a DESTDIR/usr/libx32/* /usr/libx32/
     601install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
     602               /usr/include/gnu/</userinput></screen>
     603<!-- no longer required as they are created in chap5
     604ln -svf ../libx32/ld-linux-x32.so.2 /lib/ld-linux-x32.so.2
     605-->
     606    <para>Add the library name to the dynamic loader config:</para>
     607
     608<screen role="install"><userinput>echo "/usr/libx32" &gt;&gt; /etc/ld.so.conf</userinput></screen>
     609
     610    <caution>
     611      <para>At this point, it is imperative to stop and ensure that the basic
     612      functions (compiling and linking) of the new toolchain are working as
     613      expected. To perform a sanity check, run the following commands:</para>
     614
     615<screen><userinput>echo 'int main(){}' &gt; dummy.c
     616gcc -mx32 dummy.c
     617readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
     618
     619      <para>If everything is working correctly, there should be no errors,
     620      and the output of the last command will be of the form:</para>
     621
     622<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
     623
     624      <para>If the output is not shown as above or there was no output at all,
     625      then something is wrong. Investigate and retrace the steps to find out
     626      where the problem is and correct it. This issue must be resolved before
     627      continuing on.</para>
     628
     629      <para>Once all is well, clean up the test files:</para>
     630
     631<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     632
     633    </caution>
     634
     635  </sect2><!-- mx32 -->
     636
    480637  <sect2 id="contents-glibc" role="content">
    481638    <title>Contents of Glibc</title>
  • chapter08/gmp.xml

    rf81a8a4 re8d4ea4  
    121121  </sect2>
    122122
     123  <!-- - - - - - - - - - -->
     124  <!-- Multilib - 32bit  -->
     125  <!-- - - - - - - - - - -->
     126
     127  <sect2 arch="ml_32,ml_all" role="installation">
     128    <title>Installation of GMP - 32bit</title>
     129
     130    <para>Clean previous build:</para>
     131
     132<screen><userinput remap="pre">make distclean</userinput></screen>
     133
     134    <para>Generic libraries can be created by running
     135    the following:</para>
     136
     137<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
     138cp -v configfsf.sub   config.sub</userinput></screen>
     139
     140    <para>Prepare GMP for compilation:</para>
     141
     142<screen><userinput remap="configure">ABI="32" \
     143CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
     144CXXFLAGS="$CFLAGS" \
     145PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
     146./configure                      \
     147    --host=i686-pc-linux-gnu     \
     148    --prefix=/usr                \
     149    --disable-static             \
     150    --enable-cxx                 \
     151    --libdir=/usr/lib32          \
     152    --includedir=/usr/include/m32/gmp</userinput></screen>
     153
     154    <variablelist>
     155      <title>The meaning of the new configure options:</title>
     156
     157      <varlistentry>
     158        <term><parameter>--includedir=/usr/include/m32/gmp</parameter></term>
     159        <listitem>
     160          <para>Some definitions in gmp.h differs for each arch but
     161          has same name. Therefore, the headers must be separated from
     162          each other.</para>
     163        </listitem>
     164      </varlistentry>
     165
     166    </variablelist>
     167
     168    <para>Compile the package:</para>
     169
     170<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
     171make</userinput></screen>
     172
     173    <important>
     174      <para>The test suite for GMP in this section is considered critical.
     175      Do not skip it under any circumstances.</para>
     176    </important>
     177
     178    <para>Test the results:</para>
     179
     180<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
     181 
     182    <para>Ensure that all 197 tests in the test suite passed.
     183    Check the results by issuing the following command:</para>
     184
     185<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
     186
     187    <para>Install the package:</para>
     188
     189<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     190cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     191cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
     192rm -rf DESTDIR</userinput></screen>
     193
     194  </sect2><!-- m32 -->
     195
     196  <!-- - - - - - - - - - -->
     197  <!-- Multilib - x32bit -->
     198  <!-- - - - - - - - - - -->
     199
     200  <sect2 arch="ml_x32,ml_all" role="installation">
     201    <title>Installation of GMP - x32-bit</title>
     202
     203    <para>Clean previous build:</para>
     204
     205<screen><userinput remap="pre">make distclean</userinput></screen>
     206
     207    <para>Generic libraries can be created by running
     208    the following:</para>
     209
     210<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
     211cp -v configfsf.sub   config.sub</userinput></screen>
     212
     213    <para>Prepare GMP for compilation:</para>
     214
     215<screen><userinput remap="configure">ABI="x32" \
     216CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
     217CXXFLAGS="$CFLAGS" \
     218PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
     219./configure                       \
     220    --host=x86_64-pc-linux-gnux32 \
     221    --prefix=/usr                 \
     222    --disable-static              \
     223    --enable-cxx                  \
     224    --libdir=/usr/libx32          \
     225    --includedir=/usr/include/mx32/gmp</userinput></screen>
     226
     227    <para>Compile the package:</para>
     228
     229<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
     230make</userinput></screen>
     231
     232    <important>
     233      <para>The test suite for GMP in this section is considered critical.
     234      Do not skip it under any circumstances.</para>
     235    </important>
     236
     237    <para>Test the results:</para>
     238
     239<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>
     240 
     241    <para>Ensure that all 197 tests in the test suite passed.
     242    Check the results by issuing the following command:</para>
     243
     244<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
     245
     246    <para>Install the package:</para>
     247
     248<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     249cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     250cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
     251rm -rf DESTDIR</userinput></screen>
     252
     253  </sect2><!-- mx32 -->
     254
    123255  <sect2 id="contents-gmp" role="content">
    124256    <title>Contents of GMP</title>
  • chapter08/kmod.xml

    rf81a8a4 re8d4ea4  
    9898
    9999  </sect2>
     100
     101  <!-- - - - - - - - - - -->
     102  <!-- Multilib - 32bit  -->
     103  <!-- - - - - - - - - - -->
     104 
     105  <sect2 arch="ml_32,ml_all" role="installation">
     106    <title>Installation of Kmod - 32bit</title>
     107
     108    <para>Clean previous build but keep man pages as they cannot
     109    be recreated since xsltproc isn't installed yet:</para>
     110
     111<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
     112make clean</userinput></screen>
     113
     114    <para>Prepare Kmod for compilation:</para>
     115
     116<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     117    --host=i686-pc-linux-gnu      \
     118    --prefix=/usr                 \
     119    --libdir=/usr/lib32           \
     120    --sysconfdir=/etc             \
     121    --with-xz                     \
     122    --with-zstd                   \
     123    --with-zlib                   \
     124    --with-rootlibdir=/usr/lib32</userinput></screen>
     125
     126    <para>Compile the package:</para>
     127
     128<screen><userinput remap="make">make</userinput></screen>
     129
     130    <para>Install the package:</para>
     131
     132<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     133cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     134rm -rf DESTDIR</userinput></screen>
     135
     136  </sect2><!-- m32 -->
     137
     138  <!-- - - - - - - - - - -->
     139  <!-- Multilib - x32bit -->
     140  <!-- - - - - - - - - - -->
     141 
     142  <sect2 arch="ml_x32,ml_all" role="installation">
     143    <title>Installation of Kmod - x32bit</title>
     144
     145    <para>Clean previous build but keep man pages as they cannot
     146    be recreated since xsltproc isn't installed yet:</para>
     147
     148<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
     149make clean</userinput></screen>
     150
     151    <para>Prepare Kmod for compilation:</para>
     152
     153<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     154    --host=x86_64-pc-linux-gnux32 \
     155    --prefix=/usr                 \
     156    --libdir=/usr/libx32          \
     157    --sysconfdir=/etc             \
     158    --with-xz                     \
     159    --with-zstd                   \
     160    --with-zlib                   \
     161    --with-rootlibdir=/usr/libx32</userinput></screen>
     162
     163    <para>Compile the package:</para>
     164
     165<screen><userinput remap="make">make</userinput></screen>
     166
     167    <para>Install the package:</para>
     168
     169<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     170cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     171rm -rf DESTDIR</userinput></screen>
     172
     173  </sect2><!-- mx32 -->
    100174
    101175  <sect2 id="contents-kmod" role="content">
  • chapter08/libcap.xml

    rf81a8a4 re8d4ea4  
    7676  </sect2>
    7777
     78  <!-- - - - - - - - - - -->
     79  <!-- Multilib - 32bit  -->
     80  <!-- - - - - - - - - - -->
     81 
     82  <sect2 arch="ml_32,ml_all" role="installation">
     83    <title>Installation of Libcap - 32bit</title>
     84
     85    <para>Clean previous build:</para>
     86
     87<screen><userinput remap="pre">make distclean</userinput></screen>
     88
     89    <para>Compile the package:</para>
     90
     91<screen><userinput remap="make">make CC="gcc -m32 -march=i686"</userinput></screen>
     92
     93    <para>Install the package:</para>
     94
     95<screen><userinput remap="install">make CC="gcc -m32 -march=i686" lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
     96cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     97sed -e "s|^libdir=.*|libdir=/usr/lib32|" -i /usr/lib32/pkgconfig/lib{cap,psx}.pc
     98chmod -v 755 /usr/lib32/libcap.so.&libcap-version;
     99rm -rf DESTDIR</userinput></screen>
     100
     101  </sect2><!-- m32 -->
     102
     103  <!-- - - - - - - - - - -->
     104  <!-- Multilib - x32bit -->
     105  <!-- - - - - - - - - - -->
     106 
     107  <sect2 arch="ml_x32,ml_all" role="installation">
     108    <title>Installation of Libcap - x32bit</title>
     109
     110    <para>Clean previous build:</para>
     111
     112<screen><userinput remap="pre">make distclean</userinput></screen>
     113
     114    <para>Compile the package:</para>
     115
     116<screen><userinput remap="make">make CC="gcc -mx32 -march=x86-64"</userinput></screen>
     117
     118    <para>Install the package:</para>
     119
     120<screen><userinput remap="install">make CC="gcc -mx32 -march=x86-64" lib=libx32 prefix=$PWD/DESTDIR/usr -C libcap install
     121cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     122sed -e "s|^libdir=.*|libdir=/usr/libx32|" -i /usr/libx32/pkgconfig/lib{cap,psx}.pc
     123chmod -v 755 /usr/libx32/libcap.so.&libcap-version;
     124rm -rf DESTDIR</userinput></screen>
     125
     126  </sect2><!-- mx32 -->
     127
    78128  <sect2 id="contents-libcap" role="content">
    79129    <title>Contents of Libcap</title>
  • chapter08/libelf.xml

    rf81a8a4 re8d4ea4  
    6969  </sect2>
    7070
     71  <!-- - - - - - - - - - -->
     72  <!-- Multilib - 32bit  -->
     73  <!-- - - - - - - - - - -->
     74 
     75  <sect2 arch="ml_32,ml_all" role="installation">
     76    <title>Installation of Libelf - 32bit</title>
     77
     78    <para>Clean previous build:</para>
     79
     80<screen><userinput remap="pre">make distclean</userinput></screen>
     81
     82    <para>Prepare Libtool for compilation:</para>
     83
     84<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     85    --host=i686-pc-linux-gnu \
     86    --prefix=/usr            \
     87    --libdir=/usr/lib32      \
     88    --disable-debuginfod     \
     89    --enable-libdebuginfod=dummy</userinput></screen>
     90
     91    <para>Compile the package:</para>
     92
     93<screen><userinput remap="make">make</userinput></screen>
     94
     95    <para>Install the package:</para>
     96
     97<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
     98install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc
     99cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     100rm -rf DESTDIR</userinput></screen>
     101
     102  </sect2><!-- m32 -->
     103
     104  <!-- - - - - - - - - - -->
     105  <!-- Multilib - x32bit -->
     106  <!-- - - - - - - - - - -->
     107 
     108  <sect2 arch="ml_x32,ml_all" role="installation">
     109    <title>Installation of Libelf - x32bit</title>
     110
     111    <para>Clean previous build:</para>
     112
     113<screen><userinput remap="pre">make distclean</userinput></screen>
     114
     115    <para>Prepare Libtool for compilation:</para>
     116
     117<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     118    --host=x86_64-pc-linux-gnux32 \
     119    --prefix=/usr                 \
     120    --libdir=/usr/libx32          \
     121    --disable-debuginfod          \
     122    --enable-libdebuginfod=dummy</userinput></screen>
     123
     124    <para>Compile the package:</para>
     125
     126<screen><userinput remap="make">make</userinput></screen>
     127
     128    <para>Install the package:</para>
     129
     130<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
     131install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc
     132cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     133rm -rf DESTDIR</userinput></screen>
     134
     135  </sect2><!-- mx32 -->
     136
    71137  <sect2 id="contents-elfutils" role="content">
    72138    <title>Contents of Libelf</title>
  • chapter08/libffi.xml

    rf81a8a4 re8d4ea4  
    103103  </sect2>
    104104
     105  <!-- - - - - - - - - - -->
     106  <!-- Multilib - 32bit  -->
     107  <!-- - - - - - - - - - -->
     108 
     109  <sect2 arch="ml_32,ml_all" role="installation">
     110    <title>Installation of Libffi - 32bit</title>
     111
     112    <para>Clean previous build:</para>
     113
     114<screen><userinput remap="pre">make distclean</userinput></screen>
     115
     116    <para>Prepare Libffi for compilation:</para>
     117
     118<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
     119    --host=i686-pc-linux-gnu \
     120    --prefix=/usr            \
     121    --libdir=/usr/lib32      \
     122    --disable-static         \
     123    --with-gcc-arch=i686     \
     124    --disable-exec-static-tramp</userinput></screen>
     125
     126    <para>Compile the package:</para>
     127
     128<screen><userinput remap="make">make</userinput></screen>
     129
     130    <para>To test the results, issue:</para>
     131
     132<screen><userinput remap="test">make check</userinput></screen>
     133
     134    <para>Install the package:</para>
     135
     136<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     137cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     138rm -rf DESTDIR</userinput></screen>
     139
     140  </sect2><!-- m32 -->
     141
     142  <!-- - - - - - - - - - -->
     143  <!-- Multilib - x32bit -->
     144  <!-- - - - - - - - - - -->
     145 
     146  <sect2 arch="ml_x32,ml_all" role="installation">
     147    <title>Installation of Libffi - x32bit</title>
     148
     149    <para>Clean previous build:</para>
     150
     151<screen><userinput remap="pre">make distclean</userinput></screen>
     152
     153    <para>Prepare Libffi for compilation:</para>
     154
     155<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
     156    --host=x86_64-unknown-linux-gnux32 \
     157    --prefix=/usr            \
     158    --libdir=/usr/libx32     \
     159    --disable-static         \
     160    --with-gcc-arch=x86_64   \
     161    --disable-exec-static-tramp</userinput></screen>
     162
     163    <para>Compile the package:</para>
     164
     165<screen><userinput remap="make">make</userinput></screen>
     166
     167    <para>To test the results, issue:</para>
     168
     169<screen><userinput remap="test">make check</userinput></screen>
     170
     171    <para>Install the package:</para>
     172
     173<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     174cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     175rm -rf DESTDIR</userinput></screen>
     176
     177  </sect2><!-- mx32 -->
     178
    105179  <sect2 id="contents-libffi" role="content">
    106180    <title>Contents of Libffi</title>
     
    133207
    134208</sect1>
    135 
  • chapter08/libtool.xml

    rf81a8a4 re8d4ea4  
    7878  </sect2>
    7979
     80  <!-- - - - - - - - - - -->
     81  <!-- Multilib - 32bit  -->
     82  <!-- - - - - - - - - - -->
     83 
     84  <sect2 arch="ml_32,ml_all" role="installation">
     85    <title>Installation of Libtool - 32bit</title>
     86
     87    <para>Clean previous build:</para>
     88
     89<screen><userinput remap="pre">make distclean</userinput></screen>
     90
     91    <para>Prepare Libtool for compilation:</para>
     92
     93<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     94    --host=i686-pc-linux-gnu \
     95    --prefix=/usr            \
     96    --libdir=/usr/lib32</userinput></screen>
     97
     98    <para>Compile the package:</para>
     99
     100<screen><userinput remap="make">make</userinput></screen>
     101
     102    <para>Install the package:</para>
     103
     104<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     105cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     106rm -rf DESTDIR</userinput></screen>
     107
     108  </sect2><!-- m32 -->
     109
     110  <!-- - - - - - - - - - -->
     111  <!-- Multilib - x32bit -->
     112  <!-- - - - - - - - - - -->
     113 
     114  <sect2 arch="ml_x32,ml_all" role="installation">
     115    <title>Installation of Libtool - x32bit</title>
     116
     117    <para>Clean previous build:</para>
     118
     119<screen><userinput remap="pre">make distclean</userinput></screen>
     120
     121    <para>Prepare Libtool for compilation:</para>
     122
     123<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     124    --host=x86_64-pc-linux-gnux32 \
     125    --prefix=/usr                 \
     126    --libdir=/usr/libx32</userinput></screen>
     127
     128    <para>Compile the package:</para>
     129
     130<screen><userinput remap="make">make</userinput></screen>
     131
     132    <para>Install the package:</para>
     133
     134<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     135cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     136rm -rf DESTDIR</userinput></screen>
     137
     138  </sect2><!-- mx32 -->
    80139
    81140  <sect2 id="contents-libtool" role="content">
  • chapter08/ncurses.xml

    rf81a8a4 re8d4ea4  
    161161
    162162  </sect2>
     163
     164  <!-- - - - - - - - - - -->
     165  <!-- Multilib - 32bit  -->
     166  <!-- - - - - - - - - - -->
     167  <sect2 arch="ml_32,ml_all">
     168    <title>Building Ncurses - 32bit</title>
     169
     170    <para>Clean previous build:</para>
     171
     172<screen><userinput remap="pre">make distclean</userinput></screen>
     173
     174    <para>Prepare Ncurses for compilation:</para>
     175
     176<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
     177./configure --prefix=/usr           \
     178            --host=i686-pc-linux-gnu \
     179            --libdir=/usr/lib32     \
     180            --mandir=/usr/share/man \
     181            --with-shared           \
     182            --without-debug         \
     183            --without-normal        \
     184            --enable-pc-files       \
     185            --enable-widec          \
     186            --with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
     187
     188    <para>Compile the package:</para>
     189
     190<screen><userinput remap="make">make</userinput></screen>
     191
     192    <para>Install the package:</para>
     193
     194<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     195mkdir -p DESTDIR/usr/lib32/pkgconfig
     196for lib in ncurses form panel menu ; do
     197    rm -vf                    DESTDIR/usr/lib32/lib${lib}.so
     198    echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
     199    ln -svf ${lib}w.pc        DESTDIR/usr/lib32/pkgconfig/$lib.pc
     200done
     201rm -vf                     DESTDIR/usr/lib32/libcursesw.so
     202echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
     203ln -sfv libncurses.so      DESTDIR/usr/lib32/libcurses.so
     204cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     205rm -rf DESTDIR</userinput></screen>
     206
     207  </sect2><!-- m32 -->
     208
     209  <!-- - - - - - - - - - -->
     210  <!-- Multilib - x32bit -->
     211  <!-- - - - - - - - - - -->
     212  <sect2 arch="ml_x32,ml_all">
     213    <title>Building Ncurses - x32bit</title>
     214
     215    <para>Clean previous build:</para>
     216
     217<screen><userinput remap="pre">make distclean</userinput></screen>
     218
     219    <para>Prepare Ncurses for compilation:</para>
     220
     221<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
     222./configure --prefix=/usr           \
     223            --host=x86_64-pc-linux-gnux32 \
     224            --libdir=/usr/libx32    \
     225            --mandir=/usr/share/man \
     226            --with-shared           \
     227            --without-debug         \
     228            --without-normal        \
     229            --enable-pc-files       \
     230            --enable-widec          \
     231            --with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
     232
     233    <para>Compile the package:</para>
     234
     235<screen><userinput remap="make">make</userinput></screen>
     236
     237    <para>Install the package:</para>
     238
     239<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     240mkdir -p DESTDIR/usr/libx32/pkgconfig
     241for lib in ncurses form panel menu ; do
     242    rm -vf                    DESTDIR/usr/libx32/lib${lib}.so
     243    echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
     244    ln -svf ${lib}w.pc        DESTDIR/usr/libx32/pkgconfig/$lib.pc
     245done
     246rm -vf                     DESTDIR/usr/libx32/libcursesw.so
     247echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
     248ln -sfv libncurses.so      DESTDIR/usr/libx32/libcurses.so
     249cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     250rm -rf DESTDIR</userinput></screen>
     251
     252  </sect2><!-- mx32 -->
    163253
    164254  <sect2 id="contents-ncurses" role="content">
  • chapter08/openssl.xml

    rf81a8a4 re8d4ea4  
    9999
    100100  </sect2>
     101
     102  <!-- - - - - - - - - - -->
     103  <!-- Multilib - 32bit  -->
     104  <!-- - - - - - - - - - -->
     105 
     106  <sect2 arch="ml_32,ml_all" role="installation">
     107    <title>Installation of OpenSSL - 32bit</title>
     108
     109    <para>Clean previous build:</para>
     110
     111<screen><userinput remap="pre">make distclean</userinput></screen>
     112
     113    <para>Prepare OpenSSL for compilation:</para>
     114
     115<screen><userinput remap="configure">CFLAGS="-m32 -march=i686 -Wall -O3" CXXFLAGS="$CFLAGS" \
     116./config --prefix=/usr         \
     117         --openssldir=/etc/ssl \
     118         --libdir=lib32        \
     119         shared                \
     120         zlib-dynamic          \
     121         linux-generic32</userinput></screen>
     122
     123    <para>Compile the package:</para>
     124
     125<screen><userinput remap="make">make</userinput></screen>
     126
     127    <para>Install the package:</para>
     128
     129<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     130cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     131rm -rf DESTDIR</userinput></screen>
     132
     133  </sect2><!-- m32 -->
     134
     135  <!-- - - - - - - - - - -->
     136  <!-- Multilib - x32bit -->
     137  <!-- - - - - - - - - - -->
     138 
     139  <sect2 arch="ml_x32,ml_all" role="installation">
     140    <title>Installation of OpenSSL - x32bit</title>
     141
     142    <para>Clean previous build:</para>
     143
     144<screen><userinput remap="pre">make distclean</userinput></screen>
     145
     146    <para>Prepare OpenSSL for compilation:</para>
     147
     148<screen><userinput remap="configure">CFLAGS="-mx32 -march=x86-64 -Wall -O3" CXXFLAGS="$CFLAGS" \
     149./config --prefix=/usr         \
     150         --openssldir=/etc/ssl \
     151         --libdir=libx32       \
     152         shared                \
     153         zlib-dynamic          \
     154         linux-x32</userinput></screen>
     155
     156    <para>Compile the package:</para>
     157
     158<screen><userinput remap="make">make</userinput></screen>
     159
     160    <para>Install the package:</para>
     161
     162<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     163cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     164rm -rf DESTDIR</userinput></screen>
     165
     166  </sect2><!-- mx32 -->
    101167
    102168  <sect2 id="contents-openssl" role="content">
  • chapter08/readline.xml

    rf81a8a4 re8d4ea4  
    101101  </sect2>
    102102
     103  <!-- - - - - - - - - - -->
     104  <!-- Multilib - 32bit  -->
     105  <!-- - - - - - - - - - -->
     106 
     107  <sect2 arch="ml_32,ml_all" role="installation">
     108    <title>Installation of Readline - 32bit</title>
     109
     110    <para>Clean previous build:</para>
     111
     112<screen><userinput remap="pre">make distclean</userinput></screen>
     113
     114    <para>Prepare Readline for compilation:</para>
     115
     116<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     117    --host=i686-pc-linux-gnu      \
     118    --prefix=/usr                 \
     119    --libdir=/usr/lib32           \
     120    --disable-static</userinput></screen>
     121
     122    <para>Compile the package:</para>
     123
     124<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
     125
     126    <para>Install the package:</para>
     127
     128<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
     129cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     130rm -rf DESTDIR</userinput></screen>
     131
     132  </sect2><!-- m32 -->
     133
     134  <!-- - - - - - - - - - -->
     135  <!-- Multilib - x32bit -->
     136  <!-- - - - - - - - - - -->
     137 
     138  <sect2 arch="ml_x32,ml_all" role="installation">
     139    <title>Installation of Readline - x32bit</title>
     140
     141    <para>Clean previous build:</para>
     142
     143<screen><userinput remap="pre">make distclean</userinput></screen>
     144
     145    <para>Prepare Readline for compilation:</para>
     146
     147<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     148    --host=x86_64-pc-linux-gnux32 \
     149    --prefix=/usr                 \
     150    --libdir=/usr/libx32          \
     151    --disable-static</userinput></screen>
     152
     153    <para>Compile the package:</para>
     154
     155<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
     156
     157    <para>Install the package:</para>
     158
     159<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
     160cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     161rm -rf DESTDIR</userinput></screen>
     162
     163  </sect2><!-- mx32 -->
     164
    103165  <sect2 id="contents-readline" role="content">
    104166    <title>Contents of Readline</title>
  • chapter08/stripping.xml

    rf81a8a4 re8d4ea4  
    5959
    6060cd /usr/lib
    61 
    6261for LIB in $save_usrlib; do
    6362    objcopy --only-keep-debug $LIB $LIB.dbg
     
    6766    install -vm755 /tmp/$LIB /usr/lib
    6867    rm /tmp/$LIB
    69 done
     68done</userinput>
     69<userinput arch="ml_32,ml_all">
     70cd /usr/lib32
     71for LIB in $save_usrlib; do
     72    objcopy --only-keep-debug $LIB $LIB.dbg
     73    cp $LIB /tmp/$LIB
     74    strip --strip-unneeded /tmp/$LIB
     75    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     76    install -vm755 /tmp/$LIB /usr/lib32
     77    rm /tmp/$LIB
     78done</userinput>
     79<userinput arch="ml_x32,ml_all">
     80cd /usr/libx32
     81for LIB in $save_usrlib; do
     82    objcopy --only-keep-debug $LIB $LIB.dbg
     83    cp $LIB /tmp/$LIB
     84    strip --strip-unneeded /tmp/$LIB
     85    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     86    install -vm755 /tmp/$LIB /usr/libx32
     87    rm /tmp/$LIB
     88done</userinput><userinput>
    7089
    7190online_usrbin="bash find strip"
     
    90109    install -vm755 /tmp/$LIB /usr/lib
    91110    rm /tmp/$LIB
    92 done
     111done</userinput><userinput arch="ml_32,ml_all">
     112for LIB in $online_usrlib; do
     113    cp /usr/lib32/$LIB /tmp/$LIB
     114    strip --strip-unneeded /tmp/$LIB
     115    install -vm755 /tmp/$LIB /usr/lib32
     116    rm /tmp/$LIB
     117done</userinput><userinput arch="ml_x32,ml_all">
     118for LIB in $online_usrlib; do
     119    cp /usr/libx32/$LIB /tmp/$LIB
     120    strip --strip-unneeded /tmp/$LIB
     121    install -vm755 /tmp/$LIB /usr/libx32
     122    rm /tmp/$LIB
     123done</userinput><userinput>
    93124
    94125for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
     
    101132            ;;
    102133    esac
    103 done
     134done</userinput><userinput arch="ml_32,ml_all">
     135for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg); do
     136    case "$online_usrbin $online_usrlib $save_usrlib" in
     137        *$(basename $i)* )
     138            ;;
     139        * ) strip --strip-unneeded $i
     140            ;;
     141    esac
     142done</userinput><userinput arch="ml_x32,ml_all">
     143for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg); do
     144    case "$online_usrbin $online_usrlib $save_usrlib" in
     145        *$(basename $i)* )
     146            ;;
     147        * ) strip --strip-unneeded $i
     148            ;;
     149    esac
     150done</userinput><userinput>
    104151
    105152unset BIN LIB save_usrlib online_usrbin online_usrlib
  • chapter08/systemd.xml

    rf81a8a4 re8d4ea4  
    211211
    212212  </sect2>
     213
     214  <!-- - - - - - - - - - -->
     215  <!-- Multilib - 32bit  -->
     216  <!-- - - - - - - - - - -->
     217 
     218  <sect2 arch="ml_32,ml_all" role="installation">
     219    <title>Installation of systemd - 32-bit</title>
     220
     221    <para>Clean previous build:</para>
     222
     223<screen><userinput remap="pre">rm -rf *</userinput></screen>
     224
     225    <para>Create a symlink to work around missing xsltproc:</para>
     226
     227<!-- screen><userinput remap="pre">ln -sf /tools/bin/true /usr/bin/xsltproc</userinput></screen -->
     228<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
     229
     230<!-- with cross-LFS we have util-linux in place:
     231    <para>Because we have not yet installed the final version of Util-Linux,
     232    create links to the libraries in the approprite location:</para>
     233
     234<screen><userinput remap="pre">for file in /tools/lib32/lib{blkid,mount,uuid}*; do
     235    ln -sf $file /usr/lib32/
     236done</userinput></screen>
     237-->
     238
     239    <para>Prepare systemd for compilation:</para>
     240
     241    <screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
     242CC="gcc -m32 -march=i686"              \
     243CXX="g++ -m32 -march=i686"             \
     244LANG=en_US.UTF-8                       \
     245meson --prefix=/usr                    \
     246      --sysconfdir=/etc                \
     247      --localstatedir=/var             \
     248      -Drootlibdir=/usr/lib32          \
     249      -Dblkid=true                  \
     250      -Ddefault-dnssec=no           \
     251      -Dfirstboot=false             \
     252      -Dinstall-tests=false         \
     253      -Dldconfig=false              \
     254      -Dsysusers=false              \
     255      -Db_lto=false                 \
     256      -Drpmmacrosdir=no             \
     257      -Dhomed=false                 \
     258      -Duserdb=false                \
     259      -Dman=false                   \
     260      -Dmode=release                \
     261      ..</userinput></screen>
     262
     263    <para>Compile the package:</para>
     264
     265<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
     266
     267    <para>Install the package:</para>
     268
     269<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
     270cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     271rm -rf DESTDIR
     272rm -f /usr/bin/xsltproc</userinput></screen>
     273
     274  </sect2><!-- m32 -->
     275
     276  <!-- - - - - - - - - - -->
     277  <!-- Multilib - x32bit -->
     278  <!-- - - - - - - - - - -->
     279 
     280  <sect2 arch="ml_x32,ml_all" role="installation">
     281    <title>Installation of systemd - x32-bit</title>
     282
     283    <para>Clean previous build:</para>
     284
     285<screen><userinput remap="pre">rm -rf *</userinput></screen>
     286
     287    <para>Create a symlink to work around missing xsltproc:</para>
     288
     289<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
     290<!--
     291    <para>Fix an issue on x32:</para>
     292
     293<screen><userinput remap="pre">sed '/log_debug/s@PRI_TIMEX@PRIi64@' -i src/timesync/timesyncd-manager.c
     294sed '/long drift_freq;/s@long @int64_t @' -i src/timesync/timesyncd-manager.h</userinput></screen>
     295-->
     296    <para>Prepare systemd for compilation:</para>
     297
     298<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
     299CC="gcc -mx32"                          \
     300CXX="g++ -mx32"                         \
     301CFLAGS+="-Wno-error=shift-overflow"     \
     302CXXFLAGS+="-Wno-error=shift-overflow"   \
     303LANG=en_US.UTF-8                        \
     304meson --prefix=/usr                     \
     305      --sysconfdir=/etc                 \
     306      --localstatedir=/var              \
     307      -Drootlibdir=/usr/libx32          \
     308      -Dblkid=true                  \
     309      -Ddefault-dnssec=no           \
     310      -Dfirstboot=false             \
     311      -Dinstall-tests=false         \
     312      -Dldconfig=false              \
     313      -Dsysusers=false              \
     314      -Db_lto=false                 \
     315      -Drpmmacrosdir=no             \
     316      -Dhomed=false                 \
     317      -Duserdb=false                \
     318      -Dman=false                   \
     319      -Dmode=release                \
     320      ..</userinput></screen>
     321
     322    <para>Compile the package:</para>
     323
     324<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
     325
     326    <para>Install the package:</para>
     327
     328<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
     329cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     330rm -rf DESTDIR
     331rm -f /usr/bin/xsltproc</userinput></screen>
     332
     333  </sect2><!-- mx32 -->
    213334
    214335  <sect2 id="contents-systemd" role="content">
  • chapter08/util-linux.xml

    rf81a8a4 re8d4ea4  
    113113-->
    114114  </sect2>
     115
     116  <!-- - - - - - - - - - -->
     117  <!-- Multilib - 32bit  -->
     118  <!-- - - - - - - - - - -->
     119 
     120  <sect2 arch="ml_32,ml_all" role="installation">
     121    <title>Installation of Util-linux - 32-bit</title>
     122
     123    <para>Clean previous build:</para>
     124
     125<screen><userinput remap="pre">make distclean</userinput></screen>
     126
     127    <para>Move a tool out of the way which is optionally used by
     128    configure but will report invalid pathes for multilib builds.</para>
     129
     130<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
     131
     132    <para>Prepare Util-linux for compilation:</para>
     133
     134<screen revision="sysv"><userinput remap="configure">CC="gcc -m32" \
     135./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     136            --host=i686-pc-linux-gnu \
     137            --libdir=/usr/lib32      \
     138            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     139            --disable-chfn-chsh      \
     140            --disable-login          \
     141            --disable-nologin        \
     142            --disable-su             \
     143            --disable-setpriv        \
     144            --disable-runuser        \
     145            --disable-pylibmount     \
     146            --disable-static         \
     147            --without-python         \
     148            --without-systemd        \
     149            --without-systemdsystemunitdir</userinput></screen>
     150
     151<screen revision="systemd"><userinput remap="configure">CC="gcc -m32" \
     152./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     153            --host=i686-pc-linux-gnu \
     154            --libdir=/usr/lib32      \
     155            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     156            --disable-chfn-chsh      \
     157            --disable-login          \
     158            --disable-nologin        \
     159            --disable-su             \
     160            --disable-setpriv        \
     161            --disable-runuser        \
     162            --disable-pylibmount     \
     163            --disable-static         \
     164            --without-python</userinput></screen>
     165
     166    <para>Restore the tool previously moved away:</para>
     167
     168<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
     169
     170    <para>Compile the package:</para>
     171
     172<screen><userinput remap="make">make</userinput></screen>
     173
     174    <para>Install the package:</para>
     175
     176<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     177cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     178rm -rf DESTDIR</userinput></screen>
     179
     180  </sect2><!-- m32 -->
     181
     182  <!-- - - - - - - - - - -->
     183  <!-- Multilib - x32bit -->
     184  <!-- - - - - - - - - - -->
     185 
     186  <sect2 arch="ml_x32,ml_all" role="installation">
     187    <title>Installation of Util-linux - x32-bit</title>
     188
     189    <para>Clean previous build:</para>
     190
     191<screen><userinput remap="pre">make distclean</userinput></screen>
     192
     193    <para>Move a tool out of the way which is optionally used by
     194    configure but will report invalid pathes for multilib builds.</para>
     195
     196<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
     197
     198    <para>Prepare Util-linux for compilation:</para>
     199
     200<screen revision="sysv"><userinput remap="configure">CC="gcc -mx32" \
     201./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     202            --host=x86_64-pc-linux-gnux32 \
     203            --libdir=/usr/libx32 \
     204            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     205            --disable-chfn-chsh  \
     206            --disable-login      \
     207            --disable-nologin    \
     208            --disable-su         \
     209            --disable-setpriv    \
     210            --disable-runuser    \
     211            --disable-pylibmount \
     212            --disable-static     \
     213            --without-python     \
     214            --without-systemd    \
     215            --without-systemdsystemunitdir</userinput></screen>
     216
     217<screen revision="systemd"><userinput remap="configure">CC="gcc -mx32" \
     218./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
     219            --host=x86_64-pc-linux-gnux32 \
     220            --libdir=/usr/libx32 \
     221            --docdir=/usr/share/doc/util-linux-&util-linux-version; \
     222            --disable-chfn-chsh  \
     223            --disable-login      \
     224            --disable-nologin    \
     225            --disable-su         \
     226            --disable-setpriv    \
     227            --disable-runuser    \
     228            --disable-pylibmount \
     229            --disable-static     \
     230            --without-python</userinput></screen>
     231
     232    <para>Restore the tool previously moved away:</para>
     233
     234<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
     235
     236    <para>Compile the package:</para>
     237
     238<screen><userinput remap="make">make</userinput></screen>
     239
     240    <para>Install the package:</para>
     241
     242<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     243cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     244rm -rf DESTDIR</userinput></screen>
     245
     246  </sect2><!-- mx32 -->
    115247
    116248  <sect2 id="contents-utillinux" role="content">
  • chapter08/xz.xml

    rf81a8a4 re8d4ea4  
    6868
    6969  </sect2>
     70
     71  <!-- - - - - - - - - - -->
     72  <!-- Multilib - 32bit  -->
     73  <!-- - - - - - - - - - -->
     74 
     75  <sect2 arch="ml_32,ml_all" role="installation">
     76    <title>Installation of Xz - 32bit</title>
     77
     78    <para>Clean previous build:</para>
     79
     80<screen><userinput remap="pre">make distclean</userinput></screen>
     81
     82    <para>Prepare Xz for compilation:</para>
     83
     84<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     85    --host=i686-pc-linux-gnu      \
     86    --prefix=/usr                 \
     87    --libdir=/usr/lib32           \
     88    --disable-static</userinput></screen>
     89
     90    <para>Compile the package:</para>
     91
     92<screen><userinput remap="make">make</userinput></screen>
     93
     94    <para>Install the package:</para>
     95
     96<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     97cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     98rm -rf DESTDIR</userinput></screen>
     99
     100  </sect2><!-- m32 -->
     101
     102  <!-- - - - - - - - - - -->
     103  <!-- Multilib - x32bit -->
     104  <!-- - - - - - - - - - -->
     105 
     106  <sect2 arch="ml_x32,ml_all" role="installation">
     107    <title>Installation of Xz - x32bit</title>
     108
     109    <para>Clean previous build:</para>
     110
     111<screen><userinput remap="pre">make distclean</userinput></screen>
     112
     113    <para>Prepare Xz for compilation:</para>
     114
     115<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     116    --host=x86_64-pc-linux-gnux32 \
     117    --prefix=/usr                 \
     118    --libdir=/usr/libx32          \
     119    --disable-static</userinput></screen>
     120
     121    <para>Compile the package:</para>
     122
     123<screen><userinput remap="make">make</userinput></screen>
     124
     125    <para>Install the package:</para>
     126
     127<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     128cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     129rm -rf DESTDIR</userinput></screen>
     130
     131  </sect2><!-- mx32 -->
    70132
    71133  <sect2 id="contents-xz" role="content">
  • chapter08/zlib.xml

    rf81a8a4 re8d4ea4  
    6464  </sect2>
    6565
     66  <!-- - - - - - - - - - -->
     67  <!-- Multilib - 32bit  -->
     68  <!-- - - - - - - - - - -->
     69
     70  <sect2 arch="ml_32,ml_all" role="installation">
     71    <title>Installation of Zlib - 32bit</title>
     72
     73    <para>Clean previous build:</para>
     74
     75<screen><userinput remap="pre">make distclean</userinput></screen>
     76
     77    <para>Prepare Zlib for compilation:</para>
     78
     79<screen><userinput remap="configure">CFLAGS+="-m32" CXXFLAGS+="-m32" \
     80./configure --prefix=/usr \
     81    --libdir=/usr/lib32</userinput></screen>
     82
     83    <para>Compile the package:</para>
     84
     85<screen><userinput remap="make">make</userinput></screen>
     86
     87    <para>Install the package:</para>
     88
     89<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     90cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     91rm -rf DESTDIR</userinput></screen>
     92
     93  </sect2><!-- m32 -->
     94
     95  <!-- - - - - - - - - - -->
     96  <!-- Multilib - x32bit -->
     97  <!-- - - - - - - - - - -->
     98
     99  <sect2 arch="ml_x32,ml_all" role="installation">
     100    <title>Installation of Zlib - x32bit</title>
     101
     102<screen><userinput remap="pre">make distclean</userinput></screen>
     103
     104    <para>Prepare Zlib for compilation:</para>
     105
     106<screen><userinput remap="configure">CFLAGS+="-mx32" CXXFLAGS+="-mx32" \
     107./configure --prefix=/usr    \
     108    --libdir=/usr/libx32</userinput></screen>
     109
     110    <para>Compile the package:</para>
     111
     112<screen><userinput remap="make">make</userinput></screen>
     113
     114    <para>Install the package:</para>
     115
     116<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     117cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     118rm -rf DESTDIR</userinput></screen>
     119
     120  </sect2><!-- mx32 -->
     121
    66122  <sect2 id="contents-zlib" role="content">
    67123    <title>Contents of Zlib</title>
  • chapter08/zstd.xml

    rf81a8a4 re8d4ea4  
    6969
    7070  </sect2>
     71
     72  <!-- - - - - - - - - - -->
     73  <!-- Multilib - 32bit  -->
     74  <!-- - - - - - - - - - -->
     75 
     76  <sect2 arch="ml_32,ml_all" role="installation">
     77    <title>Installation of Zstd - 32bit</title>
     78
     79    <para>Clean previous build:</para>
     80
     81<screen><userinput remap="pre">make clean</userinput></screen>
     82
     83    <para>Compile the package:</para>
     84
     85<screen><userinput remap="make">CC="gcc -m32" make prefix=/usr</userinput></screen>
     86
     87    <para>Install the package:</para>
     88
     89<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     90cp -Rv DESTDIR/usr/lib/* /usr/lib32/
     91sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc
     92rm -rf DESTDIR</userinput></screen>
     93
     94  </sect2><!-- m32 -->
     95
     96  <!-- - - - - - - - - - -->
     97  <!-- Multilib - x32bit -->
     98  <!-- - - - - - - - - - -->
     99 
     100  <sect2 arch="ml_x32,ml_all" role="installation">
     101    <title>Installation of Zstd - x32bit</title>
     102
     103    <para>Clean previous build:</para>
     104
     105<screen><userinput remap="pre">make clean</userinput></screen>
     106
     107    <para>Compile the package:</para>
     108
     109<screen><userinput remap="make">CC="gcc -mx32" make prefix=/usr</userinput></screen>
     110
     111    <para>Install the package:</para>
     112
     113<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     114cp -Rv DESTDIR/usr/lib/* /usr/libx32/
     115sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc
     116rm -rf DESTDIR</userinput></screen>
     117
     118  </sect2><!-- mx32 -->
    71119
    72120  <sect2 id="contents-zstd" role="content">
  • chapter10/kernel.xml

    rf81a8a4 re8d4ea4  
    171171    </note>
    172172
     173    <note arch="ml_32,ml_x32,ml_all">
     174      <para>
     175        The kernel on a multilib system needs to be able to
     176        identify and start binaries compiled for different architectures
     177        than the default.
     178      </para>
     179
     180      <para arch="ml_32,ml_all">
     181        If support for any 32bit ABI was built, make sure that the option
     182        "IA32 Emulation" is selected. The option 'IA32 a.out support' is
     183        optional.
     184      </para>
     185
     186      <para arch="ml_x32,ml_all">
     187        If support for the x32bit ABI was built, make sure that the option
     188        "x32 ABI for 64-bit mode" is selected.
     189      </para>
     190
     191<screen arch="ml_32">Binary Emulations  ---&gt;
     192    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     193    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     194</screen>
     195<screen arch="ml_x32">Binary Emulations  ---&gt;
     196    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     197</screen>
     198<screen arch="ml_all">Binary Emulations  ---&gt;
     199    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     200    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     201    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     202</screen>
     203    </note>
     204   
    173205    <variablelist>
    174206      <title>The rationale for the above configuration items:</title>
  • packages.ent

    rf81a8a4 re8d4ea4  
    354354<!ENTITY iproute2-fin-sbu "0.2 SBU">
    355355
     356<!ENTITY isl-version "0.24">
     357<!ENTITY isl-size "2.1 MB">
     358<!-- ENTITY isl-url "http://isl.gforge.inria.fr/isl-&isl-version;.tar.xz" -->
     359<!ENTITY isl-url "https://gcc.gnu.org/pub/gcc/infrastructure/isl-&isl-version;.tar.bz2">
     360<!ENTITY isl-md5 "dd2f7b78e118c25bd96134a52aae7f4d">
     361<!ENTITY isl-home "http://isl.gforge.inria.fr/">
     362<!ENTITY isl-fin-du "20 MB">
     363<!ENTITY isl-fin-sbu "0.1 SBU">
     364
    356365<!ENTITY jinja2-version "3.1.2">
    357366<!ENTITY jinja2-size "262 KB">
  • prologue/bookinfo.xml

    rf81a8a4 re8d4ea4  
    88<bookinfo>
    99  <title>Linux From Scratch</title>
    10   <subtitle>Version &version;</subtitle>
     10  <subtitle>Version &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase></subtitle>
    1111  <subtitle>Published &releasedate;</subtitle>
    1212
     
    2929      <firstname>Editor: DJ</firstname>
    3030      <surname>Lucas</surname>
     31    </author>
     32
     33    <author arch="ml_32,ml_x32,ml_all">
     34      <firstname>Editor: Thomas</firstname>
     35      <surname>Trepl</surname>
    3136    </author>
    3237  </authorgroup>
  • prologue/preface.xml

    rf81a8a4 re8d4ea4  
    1616  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
    1717  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="prerequisites.xml"/>
     18  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="multilib.xml"/>
    1819  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/>
    1920  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
Note: See TracChangeset for help on using the changeset viewer.