Changes in / [2d516c7:b697c87]


Ignore:
Files:
2 added
49 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r2d516c7 rb697c87  
    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
     
    183197        $(Q)xsltproc --nonet --xinclude                   \
    184198                --stringparam profile.revision $(REV) \
     199                --stringparam profile.arch $(ARCH)    \
    185200                --output $(RENDERTMP)/md5sum.xml      \
    186201                stylesheets/lfs-xsl/profile.xsl       \
  • chapter01/askforhelp.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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>su</command> command does not complete
  • chapter04/creatingminlayout.xml

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

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

    r2d516c7 rb697c87  
    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   \
     
    7777             --enable-gprofng=no \
    7878             --disable-werror</userinput></screen>
     79<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=$LFS/tools       \
     80             --with-sysroot=$LFS \
     81             --target=$LFS_TGT   \
     82             --disable-nls       \
     83             --enable-gprofng=no \
     84             --disable-werror    \
     85             --enable-multilib</userinput></screen>
    7986
    8087    <variablelist>
     
    133140      </varlistentry>
    134141
     142      <varlistentry arch="ml_32,ml_x32,ml_all">
     143        <term><parameter>--enable-multilib</parameter></term>
     144        <listitem>
     145          <para>Enables multilib support.</para>
     146        </listitem>
     147      </varlistentry>
     148
    135149    </variablelist>
    136150
  • chapter05/gcc-pass1.xml

    r2d516c7 rb697c87  
    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       \
     
    101109    --disable-libstdcxx       \
    102110    --enable-languages=c,c++</userinput></screen>
     111<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     112    arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
     113    arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     114    arch="ml_all">mlist=m64,m32,mx32</userinput>
     115<userinput remap="configure">../configure                  \
     116    --target=$LFS_TGT                              \
     117    --prefix=$LFS/tools                            \
     118    --with-glibc-version=&glibc-version;                      \
     119    --with-sysroot=$LFS                            \
     120    --with-newlib                                  \
     121    --without-headers                              \
     122    --enable-default-pie                           \
     123    --enable-default-ssp                           \
     124    --enable-initfini-array                        \
     125    --disable-nls                                  \
     126    --disable-shared                               \
     127    --enable-multilib --with-multilib-list=$mlist  \
     128    --disable-decimal-float                        \
     129    --disable-threads                              \
     130    --disable-libatomic                            \
     131    --disable-libgomp                              \
     132    --disable-libquadmath                          \
     133    --disable-libssp                               \
     134    --disable-libvtv                               \
     135    --disable-libstdcxx                            \
     136    --enable-languages=c,c++</userinput></screen>
     137
    103138    <variablelist>
    104139      <title>The meaning of the configure options:</title>
     
    157192      </varlistentry>
    158193
    159       <varlistentry>
     194      <varlistentry arch="default">
    160195        <term><parameter>--disable-multilib</parameter></term>
    161196        <listitem>
    162197          <para>On x86_64, LFS does not support a multilib configuration.
    163198          This switch is harmless for x86.</para>
     199        </listitem>
     200      </varlistentry>
     201      <varlistentry arch="ml_32,ml_x32,ml_all">
     202        <term><parameter>--enable-multilib --with-multilib-list=...</parameter></term>
     203        <listitem>
     204          <para>LFS canbe used to support multilib. Which they are is
     205          specified in the multilib list.</para>
    164206        </listitem>
    165207      </varlistentry>
  • chapter05/glibc.xml

    r2d516c7 rb697c87  
    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>
     
    9194    <para>Next, prepare Glibc for compilation:</para>
    9295
    93 <screen><userinput remap="configure">../configure                             \
     96<screen arch="default"><userinput remap="configure">../configure                             \
    9497      --prefix=/usr                      \
    9598      --host=$LFS_TGT                    \
     
    97100      --enable-kernel=&min-kernel;                \
    98101      --with-headers=$LFS/usr/include    \
     102      libc_cv_slibdir=/usr/lib</userinput></screen>
     103<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                             \
     104      --prefix=/usr                      \
     105      --host=$LFS_TGT                    \
     106      --build=$(../scripts/config.guess) \
     107      --enable-kernel=&min-kernel;                \
     108      --with-headers=$LFS/usr/include    \
     109      --enable-multi-arch                \
    99110      libc_cv_slibdir=/usr/lib</userinput></screen>
    100111
     
    209220<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
    210221
    211       <para>Note that for 32-bit machines, the interpreter name will be
     222      <para arch="default">Note that for 32-bit machines, the interpreter name will be
    212223      <filename>/lib/ld-linux.so.2</filename>.</para>
    213224
     
    237248  </sect2>
    238249
     250  <!-- - - - - - - - - - -->
     251  <!-- Multilib - 32bit  -->
     252  <!-- - - - - - - - - - -->
     253  <sect2 arch="ml_32,ml_all">
     254    <title>Building Glibc - 32bit</title>
     255
     256    <para>Now recompile for m32. The extracted source can be
     257    reused but needs to be cleaned before installing the m32
     258    version of Glibc.</para>
     259
     260    <para>Clear the build directory and remove artefacts from
     261    previous build:</para>
     262     
     263<screen><userinput remap="pre">make clean
     264find .. -name "*.a" -delete</userinput></screen>
     265
     266    <para>Configure Glibc for m32 with the following commands:</para>
     267
     268<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
     269CXX="$LFS_TGT-g++ -m32" \
     270../configure                             \
     271      --prefix=/usr                      \
     272      --host=$LFS_TGT32                  \
     273      --build=$(../scripts/config.guess) \
     274      --enable-kernel=&min-kernel;                \
     275      --with-headers=$LFS/usr/include    \
     276      --enable-multi-arch                \
     277      --libdir=/usr/lib32                \
     278      --libexecdir=/usr/lib32            \
     279      libc_cv_slibdir=/usr/lib32</userinput></screen>
     280
     281    <para>Compile the package:</para>
     282
     283<screen><userinput remap="make">make</userinput></screen>
     284
     285    <para>Install the package:</para>
     286
     287<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     288cp -a DESTDIR/usr/lib32 $LFS/usr/
     289install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
     290               $LFS/usr/include/gnu/
     291ln -svf ../lib32/ld-linux.so.2 $LFS/lib/ld-linux.so.2</userinput></screen>
     292
     293
     294    <caution>
     295      <para>At this point, it is imperative to stop and ensure that the basic
     296      functions (compiling and linking) of the new toolchain are working as
     297      expected. To perform a sanity check, run the following commands:</para>
     298
     299<screen><userinput>echo 'int main(){}' &gt; dummy.c
     300$LFS_TGT-gcc -m32 dummy.c
     301readelf -l a.out | grep '/ld-linux'</userinput></screen>
     302
     303      <para>If everything is working correctly, there should be no errors,
     304      and the output of the last command will be of the form:</para>
     305
     306<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     307
     308      <para>If the output is not shown as above or there was no output at all,
     309      then something is wrong. Investigate and retrace the steps to find out
     310      where the problem is and correct it. This issue must be resolved before
     311      continuing on.</para>
     312
     313      <para>Once all is well, clean up the test files:</para>
     314
     315<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     316
     317    </caution>
     318
     319  </sect2><!-- m32 -->
     320
     321  <!-- - - - - - - - - - -->
     322  <!-- Multilib - x32bit -->
     323  <!-- - - - - - - - - - -->
     324 
     325  <sect2 arch="ml_x32,ml_all">
     326    <title>Building Glibc - x32bit</title>
     327
     328    <para>Now recompile for mx32. The extracted source can be
     329    reused but needs to be cleaned before installing the mx32
     330    version of Glibc.</para>
     331
     332    <para>Clear the build directory and remove artefacts from
     333    previous build:</para>
     334     
     335<screen><userinput remap="pre">make clean
     336find .. -name "*.a" -delete</userinput></screen>
     337
     338    <para>Configure Glibc for mx32 with the following commands:</para>
     339
     340<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
     341CXX="$LFS_TGT-g++ -mx32" \
     342../configure                             \
     343      --prefix=/usr                      \
     344      --host=$LFS_TGTX32                 \
     345      --build=$(../scripts/config.guess) \
     346      --enable-kernel=&min-kernel;                \
     347      --with-headers=$LFS/usr/include    \
     348      --enable-multi-arch                \
     349      --libdir=/usr/libx32               \
     350      --libexecdir=/usr/libx32           \
     351      libc_cv_slibdir=/usr/libx32</userinput></screen>
     352
     353    <para>Compile the package:</para>
     354
     355<screen><userinput remap="make">make</userinput></screen>
     356
     357    <para>Install the package:</para>
     358
     359<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     360cp -a DESTDIR/usr/libx32 $LFS/usr/
     361install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
     362               $LFS/usr/include/gnu/
     363ln -svf ../libx32/ld-linux-x32.so.2 $LFS/lib/ld-linux-x32.so.2</userinput></screen>
     364
     365    <caution>
     366      <para>At this point, it is imperative to stop and ensure that the basic
     367      functions (compiling and linking) of the new toolchain are working as
     368      expected. To perform a sanity check, run the following commands:</para>
     369
     370<screen><userinput>echo 'int main(){}' &gt; dummy.c
     371$LFS_TGT-gcc -mx32 dummy.c
     372readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
     373
     374      <para>If everything is working correctly, there should be no errors,
     375      and the output of the last command will be of the form:</para>
     376
     377<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
     378
     379      <para>If the output is not shown as above or there was no output at all,
     380      then something is wrong. Investigate and retrace the steps to find out
     381      where the problem is and correct it. This issue must be resolved before
     382      continuing on.</para>
     383
     384      <para>Once all is well, clean up the test files:</para>
     385
     386<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     387
     388    </caution>
     389
     390  </sect2><!-- mx32 -->
     391
    239392  <sect2 role="content">
    240393    <title/>
  • chapter05/libstdc++.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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) \
     
    6868    --disable-werror           \
    6969    --enable-64-bit-bfd</userinput></screen>
     70<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure                   \
     71    --prefix=/usr              \
     72    --build=$(../config.guess) \
     73    --host=$LFS_TGT            \
     74    --disable-nls              \
     75    --enable-shared            \
     76    --enable-gprofng=no        \
     77    --disable-werror           \
     78    --enable-64-bit-bfd        \
     79    --enable-multilib</userinput></screen>
    7080
    7181    <variablelist>
     
    8696          <para>Enables 64-bit support (on hosts with smaller word sizes).
    8797          This may not be needed on 64-bit systems, but it does no harm.</para>
     98        </listitem>
     99      </varlistentry>
     100
     101      <varlistentry arch="ml_32,ml_x32,ml_all">
     102        <term><parameter>--enable-multilib</parameter></term>
     103        <listitem>
     104          <para>Enables multilib support in bintutils.</para>
    88105        </listitem>
    89106      </varlistentry>
  • chapter06/gcc-pass2.xml

    r2d516c7 rb697c87  
    5858mv -v mpc-&mpc-version; mpc</userinput></screen>
    5959
    60     <para>If building on x86_64, change the default directory name for 64-bit
     60
     61    <para arch="default">If building on x86_64, change the default directory name for 64-bit
    6162    libraries to <quote>lib</quote>:</para>
    6263
    63 <screen><userinput remap="pre">case $(uname -m) in
     64<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6465  x86_64)
    6566    sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
     
    6768esac</userinput></screen>
    6869
     70    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for the
     71    libraries:</para>
     72
     73<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
     74    -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
     75    -i.orig gcc/config/i386/t-linux64</userinput></screen>
     76
    6977    <para>Override the building rule of libgcc and libstdc++ headers, to
    7078    allow building these libraries with POSIX threads support:</para>
     
    8391    <para>Now prepare GCC for compilation:</para>
    8492
    85 <screen><userinput remap="configure">../configure                                       \
     93<screen arch="default"><userinput remap="configure">../configure                                       \
    8694    --build=$(../config.guess)                     \
    8795    --host=$LFS_TGT                                \
     
    100108    --disable-libvtv                               \
    101109    --enable-languages=c,c++</userinput></screen>
    102 
     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    --build=$(../config.guess)                     \
     116    --host=$LFS_TGT                                \
     117    --target=$LFS_TGT                              \
     118    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
     119    --prefix=/usr                                  \
     120    --with-build-sysroot=$LFS                      \
     121    --enable-default-pie                           \
     122    --enable-default-ssp                           \
     123    --enable-initfini-array                        \
     124    --disable-nls                                  \
     125    --enable-multilib --with-multilib-list=$mlist  \
     126    --disable-decimal-float                        \
     127    --disable-libatomic                            \
     128    --disable-libgomp                              \
     129    --disable-libquadmath                          \
     130    --disable-libssp                               \
     131    --disable-libvtv                               \
     132    --enable-languages=c,c++</userinput></screen>
     133<!--
     134    LDFLAGS_FOR_TARGET="-L$PWD/$LFS_TGT/libgcc -L$PWD/$LFS_TGT/32/libgcc -L$PWD/$LFS_TGT/x32/libgcc" \
     135-->
    103136    <variablelist>
    104137      <title>The meaning of the new configure options:</title><!-- WIP -->
  • chapter06/ncurses.xml

    r2d516c7 rb697c87  
    190190  </sect2>
    191191
     192  <!-- - - - - - - - - - -->
     193  <!-- Multilib - 32bit  -->
     194  <!-- - - - - - - - - - -->
     195  <sect2 arch="ml_32,ml_all">
     196    <title>Building Ncurses - 32bit</title>
     197
     198    <para>Clean previous build:</para>
     199
     200<screen><userinput remap="pre">make distclean</userinput></screen>
     201
     202    <para>Prepare Ncurses for compilation:</para>
     203
     204<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32"              \
     205CXX="$LFS_TGT-g++ -m32"             \
     206./configure --prefix=/usr           \
     207            --host=$LFS_TGT32       \
     208            --build=$(./config.guess)    \
     209            --libdir=/usr/lib32     \
     210            --mandir=/usr/share/man \
     211            --with-shared           \
     212            --without-normal        \
     213            --with-cxx-shared       \
     214            --without-debug         \
     215            --without-ada           \
     216            --disable-stripping     \
     217            --enable-widec</userinput></screen>
     218
     219    <para>Compile the package:</para>
     220
     221<screen><userinput remap="make">make</userinput></screen>
     222
     223    <para>Install the package:</para>
     224
     225<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     226ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so
     227cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
     228rm -rf DESTDIR</userinput></screen>
     229
     230  </sect2><!-- m32 -->
     231
     232  <!-- - - - - - - - - - -->
     233  <!-- Multilib - x32bit -->
     234  <!-- - - - - - - - - - -->
     235  <sect2 arch="ml_x32,ml_all">
     236    <title>Building Ncurses - x32bit</title>
     237
     238    <para>Clean previous build:</para>
     239
     240<screen><userinput remap="pre">make distclean</userinput></screen>
     241
     242    <para>Prepare Ncurses for compilation:</para>
     243
     244<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32"             \
     245CXX="$LFS_TGT-g++ -mx32"            \
     246./configure --prefix=/usr           \
     247            --host=$LFS_TGTX32      \
     248            --build=$(./config.guess)    \
     249            --libdir=/usr/libx32    \
     250            --mandir=/usr/share/man \
     251            --with-shared           \
     252            --without-normal        \
     253            --with-cxx-shared       \
     254            --without-debug         \
     255            --without-ada           \
     256            --disable-stripping     \
     257            --enable-widec</userinput></screen>
     258
     259    <para>Compile the package:</para>
     260
     261<screen><userinput remap="make">make</userinput></screen>
     262
     263    <para>Install the package:</para>
     264
     265<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
     266ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so
     267cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
     268rm -rf DESTDIR</userinput></screen>
     269
     270  </sect2><!-- mx32 -->
     271
    192272  <sect2 role="content">
    193273    <title/>
  • chapter07/changingowner.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    2424    failures.  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

    r2d516c7 rb697c87  
    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 everywhere. In the commands above, two
  • chapter07/util-linux.xml

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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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    --sysconfdir=/etc     \
     84    --libdir=/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 Attr - x32bit</title>
     105
     106    <para>Clean previous build:</para>
     107
     108<screen><userinput remap="pre">make distclean</userinput></screen>
     109
     110    <para>Prepare Attr for compilation:</para>
     111
     112<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     113    --prefix=/usr          \
     114    --disable-static       \
     115    --sysconfdir=/etc      \
     116    --libdir=/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 -->
     130
    67131  <sect2 id="contents-attr" role="content">
    68132    <title>Contents of Attr</title>
  • chapter08/binutils.xml

    r2d516c7 rb697c87  
    7373    <para>Prepare Binutils for compilation:</para>
    7474
    75 <screen><userinput remap="configure">../configure --prefix=/usr       \
     75<screen arch="default"><userinput remap="configure">../configure --prefix=/usr       \
    7676             --sysconfdir=/etc   \
    7777             --enable-gold       \
     
    8282             --enable-64-bit-bfd \
    8383             --with-system-zlib</userinput></screen>
     84<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr       \
     85             --sysconfdir=/etc   \
     86             --enable-gold       \
     87             --enable-ld=default \
     88             --enable-plugins    \
     89             --enable-shared     \
     90             --disable-werror    \
     91             --enable-64-bit-bfd \
     92             --with-system-zlib  \
     93             --enable-multilib</userinput></screen>
     94
    8495    <variablelist>
    8596      <title>The meaning of the configure parameters:</title>
     
    113124           <para>Enables 64-bit support (on hosts with narrower word sizes).
    114125           May not be needed on 64-bit systems, but does no harm.</para>
     126        </listitem>
     127      </varlistentry>
     128
     129      <varlistentry arch="ml_32,ml_x32,ml_all">
     130        <term><parameter>--enable-multilib</parameter></term>
     131        <listitem>
     132          <para>Enables multilib support in bintutils.</para>
    115133        </listitem>
    116134      </varlistentry>
  • chapter08/bzip2.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    2222  builds.  Remove those files now:</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

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

    r2d516c7 rb697c87  
    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    --disable-static     \
     86    --libdir=/usr/lib32  \
     87    --host=i686-pc-linux-gnu</userinput></screen>
     88
     89    <para>Compile the package:</para>
     90
     91<screen><userinput remap="make">make</userinput></screen>
     92
     93    <para>Install the package:</para>
     94
     95<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     96cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     97rm -rf DESTDIR</userinput></screen>
     98
     99  </sect2><!-- m32 -->
     100
     101  <!-- - - - - - - - - - -->
     102  <!-- Multilib - x32bit -->
     103  <!-- - - - - - - - - - -->
     104 
     105  <sect2 arch="ml_x32,ml_all" role="installation">
     106    <title>Installation of Expat - x32bit</title>
     107
     108    <para>Clean previous build but keep precompiled doc because it
     109    cannot be rebuilt in this stage of the system:</para>
     110
     111<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
     112make clean</userinput></screen>
     113
     114    <para>Prepare Expat for compilation:</para>
     115
     116<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     117    --prefix=/usr        \
     118    --disable-static     \
     119    --libdir=/usr/libx32 \
     120    --host=x86_64-pc-linux-gnux32</userinput></screen>
     121
     122    <para>Compile the package:</para>
     123
     124<screen><userinput remap="make">make</userinput></screen>
     125
     126    <para>Install the package:</para>
     127
     128<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     129cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     130rm -rf DESTDIR</userinput></screen>
     131
     132  </sect2><!-- mx32 -->
     133
    68134  <sect2 id="contents-expat" role="content">
    69135    <title>Contents of Expat</title>
  • chapter08/file.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    5858    libraries to <quote>lib</quote>:</para>
    5959
    60 <screen><userinput remap="pre">case $(uname -m) in
     60<screen arch="default"><userinput remap="pre">case $(uname -m) in
    6161  x86_64)
    6262    sed -e '/m64=/s/lib64/lib/' \
     
    6565esac</userinput></screen>
    6666
     67    <para arch="ml_32,ml_x32,ml_all">Change the default directory name for 64-bit
     68    libraries to <quote>lib</quote>:</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
    6774    <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
    6875
     
    7279    <para>Prepare GCC for compilation:</para>
    7380
    74 <screen><userinput remap="configure">../configure --prefix=/usr            \
     81<screen arch="default"><userinput remap="configure">../configure --prefix=/usr            \
    7582             LD=ld                    \
    7683             --enable-languages=c,c++ \
     
    7986             --disable-multilib       \
    8087             --disable-bootstrap      \
     88             --with-system-zlib</userinput></screen>
     89<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     90  arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
     91  arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     92  arch="ml_all">mlist=m64,m32,mx32</userinput>
     93<userinput remap="configure">../configure --prefix=/usr               \
     94             LD=ld                       \
     95             --enable-languages=c,c++    \
     96             --enable-default-pie        \
     97             --enable-default-ssp        \
     98             --enable-multilib           \
     99             --with-multilib-list=$mlist \
     100             --disable-bootstrap         \
    81101             --with-system-zlib</userinput></screen>
    82102
     
    275295SEARCH_DIR("/usr/lib");</computeroutput></screen>
    276296
    277    <para>A 32-bit system may use a few other directories. For example, here
     297   <para arch="default">A 32-bit system may use a few other directories. For example, here
    278298   is the output from an i686 machine:</para>
    279299
    280 <screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
     300<!-- not using entities here as the dir names has nothing to do with multilib -->
     301<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
    281302SEARCH_DIR("/usr/local/lib32")
    282303SEARCH_DIR("/lib32")
  • chapter08/glibc.xml

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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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-openssl                \
     122    --with-xz                     \
     123    --with-zstd                   \
     124    --with-zlib                   \
     125    --with-rootlibdir=/usr/lib32</userinput></screen>
     126
     127    <para>Compile the package:</para>
     128
     129<screen><userinput remap="make">make</userinput></screen>
     130
     131    <para>Install the package:</para>
     132
     133<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     134cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     135rm -rf DESTDIR</userinput></screen>
     136
     137  </sect2><!-- m32 -->
     138
     139  <!-- - - - - - - - - - -->
     140  <!-- Multilib - x32bit -->
     141  <!-- - - - - - - - - - -->
     142 
     143  <sect2 arch="ml_x32,ml_all" role="installation">
     144    <title>Installation of Kmod - x32bit</title>
     145
     146    <para>Clean previous build but keep man pages as they cannot
     147    be recreated since xsltproc isn't installed yet:</para>
     148
     149<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
     150make clean</userinput></screen>
     151
     152    <para>Prepare Kmod for compilation:</para>
     153
     154<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
     155    --host=x86_64-pc-linux-gnux32 \
     156    --prefix=/usr                 \
     157    --libdir=/usr/libx32          \
     158    --sysconfdir=/etc             \
     159    --with-openssl                \
     160    --with-xz                     \
     161    --with-zstd                   \
     162    --with-zlib                   \
     163    --with-rootlibdir=/usr/libx32</userinput></screen>
     164
     165    <para>Compile the package:</para>
     166
     167<screen><userinput remap="make">make</userinput></screen>
     168
     169    <para>Install the package:</para>
     170
     171<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     172cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     173rm -rf DESTDIR</userinput></screen>
     174
     175  </sect2><!-- mx32 -->
    100176
    101177  <sect2 id="contents-kmod" role="content">
  • chapter08/libcap.xml

    r2d516c7 rb697c87  
    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

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

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

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

    r2d516c7 rb697c87  
    173173
    174174<screen role="nodump"><userinput>make distclean
    175 ./configure --prefix=/usr    \
    176             --with-shared    \
    177             --without-normal \
    178             --without-debug  \
     175./configure --prefix=/usr     \
     176            --with-shared     \
     177            --without-normal  \
     178            --with-cxx-shared \
     179            --without-debug   \
    179180            --without-cxx-binding \
    180181            --with-abi-version=5
     
    184185
    185186  </sect2>
     187
     188  <!-- - - - - - - - - - -->
     189  <!-- Multilib - 32bit  -->
     190  <!-- - - - - - - - - - -->
     191  <sect2 arch="ml_32,ml_all">
     192    <title>Building Ncurses - 32bit</title>
     193
     194    <para>Clean previous build:</para>
     195
     196<screen><userinput remap="pre">make distclean</userinput></screen>
     197
     198    <para>Prepare Ncurses for compilation:</para>
     199
     200<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
     201./configure --prefix=/usr           \
     202            --host=i686-pc-linux-gnu \
     203            --libdir=/usr/lib32     \
     204            --mandir=/usr/share/man \
     205            --with-shared           \
     206            --without-debug         \
     207            --without-normal        \
     208            --with-cxx-shared       \
     209            --enable-pc-files       \
     210            --enable-widec          \
     211            --with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
     212
     213    <para>Compile the package:</para>
     214
     215<screen><userinput remap="make">make</userinput></screen>
     216
     217    <para>Install the package:</para>
     218
     219<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     220mkdir -p DESTDIR/usr/lib32/pkgconfig
     221for lib in ncurses form panel menu ; do
     222    rm -vf                    DESTDIR/usr/lib32/lib${lib}.so
     223    echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
     224    ln -svf ${lib}w.pc        DESTDIR/usr/lib32/pkgconfig/$lib.pc
     225done
     226rm -vf                     DESTDIR/usr/lib32/libcursesw.so
     227echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
     228ln -sfv libncurses.so      DESTDIR/usr/lib32/libcurses.so
     229cp -Rv DESTDIR/usr/lib32/* /usr/lib32
     230rm -rf DESTDIR</userinput></screen>
     231
     232  </sect2><!-- m32 -->
     233
     234  <!-- - - - - - - - - - -->
     235  <!-- Multilib - x32bit -->
     236  <!-- - - - - - - - - - -->
     237  <sect2 arch="ml_x32,ml_all">
     238    <title>Building Ncurses - x32bit</title>
     239
     240    <para>Clean previous build:</para>
     241
     242<screen><userinput remap="pre">make distclean</userinput></screen>
     243
     244    <para>Prepare Ncurses for compilation:</para>
     245
     246<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
     247./configure --prefix=/usr           \
     248            --host=x86_64-pc-linux-gnux32 \
     249            --libdir=/usr/libx32    \
     250            --mandir=/usr/share/man \
     251            --with-shared           \
     252            --without-debug         \
     253            --without-normal        \
     254            --enable-pc-files       \
     255            --enable-widec          \
     256            --with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
     257
     258    <para>Compile the package:</para>
     259
     260<screen><userinput remap="make">make</userinput></screen>
     261
     262    <para>Install the package:</para>
     263
     264<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
     265mkdir -p DESTDIR/usr/libx32/pkgconfig
     266for lib in ncurses form panel menu ; do
     267    rm -vf                    DESTDIR/usr/libx32/lib${lib}.so
     268    echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
     269    ln -svf ${lib}w.pc        DESTDIR/usr/libx32/pkgconfig/$lib.pc
     270done
     271rm -vf                     DESTDIR/usr/libx32/libcursesw.so
     272echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
     273ln -sfv libncurses.so      DESTDIR/usr/libx32/libcurses.so
     274cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     275rm -rf DESTDIR</userinput></screen>
     276
     277  </sect2><!-- mx32 -->
    186278
    187279  <sect2 id="contents-ncurses" role="content">
  • chapter08/openssl.xml

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

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

    r2d516c7 rb697c87  
    6565
    6666cd /usr/lib
    67 
    6867for LIB in $save_usrlib; do
    6968    objcopy --only-keep-debug $LIB $LIB.dbg
     
    7372    install -vm755 /tmp/$LIB /usr/lib
    7473    rm /tmp/$LIB
    75 done
     74done</userinput>
     75<userinput arch="ml_32,ml_all">
     76cd /usr/lib32
     77for LIB in $save_usrlib; do
     78    objcopy --only-keep-debug $LIB $LIB.dbg
     79    cp $LIB /tmp/$LIB
     80    strip --strip-unneeded /tmp/$LIB
     81    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     82    install -vm755 /tmp/$LIB /usr/lib32
     83    rm /tmp/$LIB
     84done</userinput>
     85<userinput arch="ml_x32,ml_all">
     86cd /usr/libx32
     87for LIB in $save_usrlib; do
     88    objcopy --only-keep-debug $LIB $LIB.dbg
     89    cp $LIB /tmp/$LIB
     90    strip --strip-unneeded /tmp/$LIB
     91    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     92    install -vm755 /tmp/$LIB /usr/libx32
     93    rm /tmp/$LIB
     94done</userinput><userinput>
    7695
    7796online_usrbin="bash find strip"
     
    97116    install -vm755 /tmp/$LIB /usr/lib
    98117    rm /tmp/$LIB
    99 done
     118done</userinput><userinput arch="ml_32,ml_all">
     119for LIB in $online_usrlib; do
     120    cp /usr/lib32/$LIB /tmp/$LIB
     121    strip --strip-unneeded /tmp/$LIB
     122    install -vm755 /tmp/$LIB /usr/lib32
     123    rm /tmp/$LIB
     124done</userinput><userinput arch="ml_x32,ml_all">
     125for LIB in $online_usrlib; do
     126    cp /usr/libx32/$LIB /tmp/$LIB
     127    strip --strip-unneeded /tmp/$LIB
     128    install -vm755 /tmp/$LIB /usr/libx32
     129    rm /tmp/$LIB
     130done</userinput><userinput>
    100131
    101132for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
     
    108139            ;;
    109140    esac
    110 done
     141done</userinput><userinput arch="ml_32,ml_all">
     142for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg) \
     143         $(find /usr/lib32 -type f -name \*.a); 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 arch="ml_x32,ml_all">
     151for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg) \
     152         $(find /usr/libx32 -type f -name \*.a); do
     153    case "$online_usrbin $online_usrlib $save_usrlib" in
     154        *$(basename $i)* )
     155            ;;
     156        * ) strip --strip-unneeded $i
     157            ;;
     158    esac
     159done</userinput><userinput>
    111160
    112161unset BIN LIB save_usrlib online_usrbin online_usrlib
  • chapter08/systemd.xml

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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    201201    </note>
    202202
     203    <note arch="ml_32,ml_x32,ml_all">
     204      <para>
     205        The kernel on a multilib system needs to be able to
     206        identify and start binaries compiled for different architectures
     207        than the default.
     208      </para>
     209
     210      <para arch="ml_32,ml_all">
     211        If support for any 32bit ABI was built, make sure that the option
     212        "IA32 Emulation" is selected. The option 'IA32 a.out support' is
     213        optional.
     214      </para>
     215
     216      <para arch="ml_x32,ml_all">
     217        If support for the x32bit ABI was built, make sure that the option
     218        "x32 ABI for 64-bit mode" is selected.
     219      </para>
     220
     221<screen arch="ml_32">Binary Emulations  ---&gt;
     222    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     223    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     224</screen>
     225<screen arch="ml_x32">Binary Emulations  ---&gt;
     226    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     227</screen>
     228<screen arch="ml_all">Binary Emulations  ---&gt;
     229    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     230    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     231    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     232</screen>
     233    </note>
     234   
    203235    <variablelist>
    204236      <title>The rationale for the above configuration items:</title>
  • packages.ent

    r2d516c7 rb697c87  
    351351<!ENTITY iproute2-fin-sbu "0.2 SBU">
    352352
     353<!ENTITY isl-version "0.24">
     354<!ENTITY isl-size "2.1 MB">
     355<!-- ENTITY isl-url "http://isl.gforge.inria.fr/isl-&isl-version;.tar.xz" -->
     356<!ENTITY isl-url "https://gcc.gnu.org/pub/gcc/infrastructure/isl-&isl-version;.tar.bz2">
     357<!ENTITY isl-md5 "dd2f7b78e118c25bd96134a52aae7f4d">
     358<!ENTITY isl-home "http://isl.gforge.inria.fr/">
     359<!ENTITY isl-fin-du "20 MB">
     360<!ENTITY isl-fin-sbu "0.1 SBU">
     361
    353362<!ENTITY jinja2-version "3.1.2">
    354363<!ENTITY jinja2-size "262 KB">
  • prologue/bookinfo.xml

    r2d516c7 rb697c87  
    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

    r2d516c7 rb697c87  
    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.