Changes in / [26d1178:f8b6ce0]


Ignore:
Files:
3 added
51 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    6161    <itemizedlist>
    6262      <listitem>
    63         <para>The version of the book being used (in this case &version;)</para>
     63        <para>The version of the book being used (in this case &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase>)</para>
    6464      </listitem>
    6565      <listitem>
     
    7676      </listitem>
    7777      <listitem>
    78         <para>Note whether you have deviated from the book at all </para>
     78        <para>Note whether you have deviated from the book at all</para>
    7979      </listitem>
    8080    </itemizedlist>
  • chapter01/changelog.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    263263bash version-check.sh</userinput></screen>
    264264
    265  </sect2>
     265    <para arch="ml_32,ml_x32,ml_all">
     266      Building multilib support requires the kernel of the host system
     267      to have 32-bit emulation support included.
     268    </para>
     269<screen arch="ml_32,ml_x32,ml_all">Binary Emulations  ---&gt;
     270    [*] IA32 Emulation
     271    &lt;M&gt;   IA32 a.out support
     272    [*] x32 ABI for 64-bit mode
     273</screen>
     274
     275    <para arch="ml_32,ml_x32,ml_all">The option 'IA32 a.out support' is
     276      optional. In case your kernel does not have 'x32 ABI for 64-bit mode'
     277      enabled but only 'IA32 Emulation', you can continue to build your
     278      system but you have to leave out any sections showing instructions
     279      for building x32 objects. If neither 'IA32 Emulation' nor
     280      'x32 ABI for 64-bit mode' is enabled, you will run in errors
     281      latest when building <application>glibc</application> in Chapter 6,
     282      so an upgrade of your host system kernel is required.
     283    </para>
     284   
     285  </sect2>
     286
    266287</sect1>
  • chapter03/packages.xml

    r26d1178 rf8b6ce0  
    380380
    381381    <varlistentry>
     382      <term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
     383      <listitem>
     384        <para>Home page: <ulink url="&isl-home;"/></para>
     385        <para>Download: <ulink url="&isl-url;"/></para>
     386        <para>MD5 sum: <literal>&isl-md5;</literal></para>
     387      </listitem>
     388    </varlistentry>
     389
     390    <varlistentry>
    382391      <term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
    383392      <listitem>
  • chapter04/addinguser.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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                                \
     
    101109    --disable-libvtv                               \
    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    --build=$(../config.guess)                     \
     117    --host=$LFS_TGT                                \
     118    --target=$LFS_TGT                              \
     119    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
     120    --prefix=/usr                                  \
     121    --with-build-sysroot=$LFS                      \
     122    --enable-default-pie                           \
     123    --enable-default-ssp                           \
     124    --disable-nls                                  \
     125    --enable-multilib --with-multilib-list=$mlist  \
     126    --disable-libatomic                            \
     127    --disable-libgomp                              \
     128    --disable-libquadmath                          \
     129    --disable-libsanitizer                         \
     130    --disable-libssp                               \
     131    --disable-libvtv                               \
     132    --enable-languages=c,c++</userinput></screen>
    103133
    104134    <variablelist>
  • chapter06/ncurses.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    5050    <para>Prepare Binutils for compilation:</para>
    5151
    52 <screen><userinput remap="configure">../configure --prefix=/usr       \
     52<screen arch="default"><userinput remap="configure">../configure --prefix=/usr       \
    5353             --sysconfdir=/etc   \
    5454             --enable-gold       \
     
    5959             --enable-64-bit-bfd \
    6060             --with-system-zlib</userinput></screen>
     61<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr       \
     62             --sysconfdir=/etc   \
     63             --enable-gold       \
     64             --enable-ld=default \
     65             --enable-plugins    \
     66             --enable-shared     \
     67             --disable-werror    \
     68             --enable-64-bit-bfd \
     69             --with-system-zlib  \
     70             --enable-multilib</userinput></screen>
     71
    6172    <variablelist>
    6273      <title>The meaning of the configure parameters:</title>
     
    90101           <para>Enables 64-bit support (on hosts with narrower word sizes).
    91102           May not be needed on 64-bit systems, but does no harm.</para>
     103        </listitem>
     104      </varlistentry>
     105
     106      <varlistentry arch="ml_32,ml_x32,ml_all">
     107        <term><parameter>--enable-multilib</parameter></term>
     108        <listitem>
     109          <para>Enables multilib support in bintutils.</para>
    92110        </listitem>
    93111      </varlistentry>
  • chapter08/bzip2.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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/expat.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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++ \
     
    8087             --disable-bootstrap      \
    8188             --disable-fixincludes    \
     89             --with-system-zlib</userinput></screen>
     90<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
     91  arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
     92  arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
     93  arch="ml_all">mlist=m64,m32,mx32</userinput>
     94<userinput remap="configure">../configure --prefix=/usr               \
     95             LD=ld                       \
     96             --enable-languages=c,c++    \
     97             --enable-default-pie        \
     98             --enable-default-ssp        \
     99             --enable-multilib           \
     100             --with-multilib-list=$mlist \
     101             --disable-bootstrap         \
     102             --disable-fixincludes       \
    82103             --with-system-zlib</userinput></screen>
    83104
     
    304325SEARCH_DIR("/usr/lib");</computeroutput></screen>
    305326
    306    <para>A 32-bit system may use a few other directories. For example, here
     327   <para arch="default">A 32-bit system may use a few other directories. For example, here
    307328   is the output from an i686 machine:</para>
    308329
    309 <screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
     330<!-- not using entities here as the dir names has nothing to do with multilib -->
     331<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
    310332SEARCH_DIR("/usr/local/lib32")
    311333SEARCH_DIR("/lib32")
  • chapter08/glibc.xml

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

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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    6767  </sect2>
    6868
     69  <!-- - - - - - - - - - -->
     70  <!-- Multilib - 32bit  -->
     71  <!-- - - - - - - - - - -->
     72 
     73  <sect2 arch="ml_32,ml_all" role="installation">
     74    <title>Installation of Libelf - 32bit</title>
     75
     76    <para>Clean previous build:</para>
     77
     78<screen><userinput remap="pre">make distclean</userinput></screen>
     79
     80    <para>Prepare Libtool for compilation:</para>
     81
     82<screen><userinput remap="configure">CC="gcc -m32" ./configure \
     83    --host=i686-pc-linux-gnu \
     84    --prefix=/usr            \
     85    --libdir=/usr/lib32      \
     86    --disable-debuginfod     \
     87    --enable-libdebuginfod=dummy</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 -C libelf install
     96install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc
     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 Libelf - x32bit</title>
     108
     109    <para>Clean previous build:</para>
     110
     111<screen><userinput remap="pre">make distclean</userinput></screen>
     112
     113    <para>Prepare Libtool 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-debuginfod          \
     120    --enable-libdebuginfod=dummy</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 -C libelf install
     129install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc
     130cp -Rv DESTDIR/usr/libx32/* /usr/libx32
     131rm -rf DESTDIR</userinput></screen>
     132
     133  </sect2><!-- mx32 -->
     134
    69135  <sect2 id="contents-elfutils" role="content">
    70136    <title>Contents of Libelf</title>
  • chapter08/libffi.xml

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

    r26d1178 rf8b6ce0  
    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/libxcrypt.xml

    r26d1178 rf8b6ce0  
    116116  </sect2>
    117117
     118  <!-- - - - - - - - - - -->
     119  <!-- Multilib - 32bit  -->
     120  <!-- - - - - - - - - - -->
     121  <sect2 arch="ml_32,ml_all" role="installation">
     122    <title>Installation of Libxcrypt - 32bit</title>
     123
     124    <para>Clean previous build:</para>
     125
     126<screen><userinput remap="pre">make distclean</userinput></screen>
     127
     128    <para>Prepare File for compilation:</para>
     129
     130<screen><userinput remap="configure">CC="gcc -m32" \
     131./configure --prefix=/usr                \
     132            --host=i686-pc-linux-gnu     \
     133            --libdir=/usr/lib32          \
     134            --enable-hashes=strong,glibc \
     135            --enable-obsolete-api=glibc  \
     136            --disable-static             \
     137            --disable-failure-tokens</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">cp -av .libs/libcrypt.so* /usr/lib32/ &amp;&amp;
     146make install-pkgconfigDATA &amp;&amp;
     147ln -svf libxcrypt.pc /usr/lib32/pkgconfig/libcrypt.pc</userinput></screen>
     148
     149  </sect2><!-- m32 -->
     150
     151  <!-- - - - - - - - - - -->
     152  <!-- Multilib - x32bit  -->
     153  <!-- - - - - - - - - - -->
     154  <sect2 arch="ml_x32,ml_all" role="installation">
     155    <title>Installation of Libxcrypt - x32bit</title>
     156
     157    <para>Clean previous build:</para>
     158
     159<screen><userinput remap="pre">make distclean</userinput></screen>
     160
     161    <para>Prepare File for compilation:</para>
     162
     163<screen><userinput remap="configure">CC="gcc -mx32" \
     164./configure --prefix=/usr                 \
     165            --host=x86_64-pc-linux-gnux32 \
     166            --libdir=/usr/libx32          \
     167            --enable-hashes=strong,glibc  \
     168            --enable-obsolete-api=glibc   \
     169            --disable-static              \
     170            --disable-failure-tokens</userinput></screen>
     171
     172    <para>Compile the package:</para>
     173
     174<screen><userinput remap="make">make</userinput></screen>
     175
     176    <para>Install the package:</para>
     177
     178<screen><userinput remap="install">cp -av .libs/libcrypt.so* /usr/libx32/ &amp;&amp;
     179make install-pkgconfigDATA &amp;&amp;
     180ln -svf libxcrypt.pc /usr/libx32/pkgconfig/libcrypt.pc</userinput></screen>
     181
     182  </sect2><!-- mx32 -->
     183
    118184  <sect2 id="contents-libxcrypt" role="content">
    119185    <title>Contents of Libxcrypt</title>
  • chapter08/ncurses.xml

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

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

    r26d1178 rf8b6ce0  
    7272<screen><userinput remap="install">ln -sv pkgconf   /usr/bin/pkg-config
    7373ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</userinput></screen>
     74<!--
     75    <para arch="ml_32,ml_x32,ml_all">
     76      For better support of the multilib platform create some
     77      additional files by executing the following commands:
     78    </para>
    7479
     80<screen arch="ml_32,ml_x32,ml_all"><userinput remap="install">ln -sv pkgconf /usr/bin/i686-pc-linux-gnu-pkg-config
     81ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnux32-pkg-config
     82ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnu-pkg-config
     83
     84mkdir -pv /usr/share/pkgconfig/personality.d
     85
     86cat &gt; /usr/share/pkgconfig/personality.d/i686-pc-linux-gnu.personality &lt;&lt;EOF
     87Triplet: i686-pc-linux-gnu
     88SysrootDir: /
     89DefaultSearchPaths: /usr/lib32/pkgconfig:/usr/share/pkgconfig
     90SystemIncludePaths: /usr/include
     91SystemLibraryPaths: /usr/lib32
     92EOF
     93
     94cat &gt; /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnux32.personality &lt;&lt;EOF
     95Triplet: x86_64-pc-linux-gnux32
     96SysrootDir: /
     97DefaultSearchPaths: /usr/libx32/pkgconfig:/usr/share/pkgconfig
     98SystemIncludePaths: /usr/include
     99SystemLibraryPaths: /usr/libx32
     100EOF
     101
     102cat &gt; /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnu.personality &lt;&lt;EOF
     103Triplet: x86_64-pc-linux-gnu
     104SysrootDir: /
     105DefaultSearchPaths: /usr/lib/pkgconfig:/usr/share/pkgconfig
     106SystemIncludePaths: /usr/include
     107SystemLibraryPaths: /usr/lib
     108EOF
     109</userinput></screen>
     110-->
    75111  </sect2>
    76112
  • chapter08/readline.xml

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    7777
    7878cd /usr/lib
    79 
    8079for LIB in $save_usrlib; do
    8180    objcopy --only-keep-debug $LIB $LIB.dbg
     
    8584    install -vm755 /tmp/$LIB /usr/lib
    8685    rm /tmp/$LIB
    87 done
     86done</userinput>
     87<userinput arch="ml_32,ml_all">
     88cd /usr/lib32
     89for LIB in $save_usrlib; do
     90    objcopy --only-keep-debug $LIB $LIB.dbg
     91    cp $LIB /tmp/$LIB
     92    strip --strip-unneeded /tmp/$LIB
     93    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     94    install -vm755 /tmp/$LIB /usr/lib32
     95    rm /tmp/$LIB
     96done</userinput>
     97<userinput arch="ml_x32,ml_all">
     98cd /usr/libx32
     99for LIB in $save_usrlib; do
     100    objcopy --only-keep-debug $LIB $LIB.dbg
     101    cp $LIB /tmp/$LIB
     102    strip --strip-unneeded /tmp/$LIB
     103    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
     104    install -vm755 /tmp/$LIB /usr/libx32
     105    rm /tmp/$LIB
     106done</userinput><userinput>
    88107
    89108online_usrbin="bash find strip"
     
    110129    install -vm755 /tmp/$LIB /usr/lib
    111130    rm /tmp/$LIB
    112 done
     131done</userinput><userinput arch="ml_32,ml_all">
     132for LIB in $online_usrlib; do
     133    cp /usr/lib32/$LIB /tmp/$LIB
     134    strip --strip-unneeded /tmp/$LIB
     135    install -vm755 /tmp/$LIB /usr/lib32
     136    rm /tmp/$LIB
     137done</userinput><userinput arch="ml_x32,ml_all">
     138for LIB in $online_usrlib; do
     139    cp /usr/libx32/$LIB /tmp/$LIB
     140    strip --strip-unneeded /tmp/$LIB
     141    install -vm755 /tmp/$LIB /usr/libx32
     142    rm /tmp/$LIB
     143done</userinput><userinput>
    113144
    114145for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
     
    121152            ;;
    122153    esac
    123 done
     154done</userinput><userinput arch="ml_32,ml_all">
     155for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg) \
     156         $(find /usr/lib32 -type f -name \*.a); do
     157    case "$online_usrbin $online_usrlib $save_usrlib" in
     158        *$(basename $i)* )
     159            ;;
     160        * ) strip --strip-unneeded $i
     161            ;;
     162    esac
     163done</userinput><userinput arch="ml_x32,ml_all">
     164for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg) \
     165         $(find /usr/libx32 -type f -name \*.a); do
     166    case "$online_usrbin $online_usrlib $save_usrlib" in
     167        *$(basename $i)* )
     168            ;;
     169        * ) strip --strip-unneeded $i
     170            ;;
     171    esac
     172done</userinput><userinput>
    124173
    125174unset BIN LIB save_usrlib online_usrbin online_usrlib
  • chapter08/systemd.xml

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

    r26d1178 rf8b6ce0  
    161161  </sect2>
    162162
     163  <!-- - - - - - - - - - -->
     164  <!-- Multilib - 32bit  -->
     165  <!-- - - - - - - - - - -->
     166  <sect2 arch="ml_32,ml_all" role="installation">
     167    <title>Installation of Udev - 32bit</title>
     168
     169    <para>Clean previous build (while still in the build directory):</para>
     170
     171<screen><userinput remap="pre">rm -rf *</userinput></screen>
     172
     173    <para>Prepare File for compilation:</para>
     174
     175<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
     176CC="gcc -m32 -march=i686"              \
     177CXX="g++ -m32 -march=i686"             \
     178LANG=en_US.UTF-8                       \
     179meson setup \
     180      --prefix=/usr                 \
     181      --buildtype=release           \
     182      -Dmode=release                \
     183      -Ddev-kvm-mode=0660           \
     184      -Dlink-udev-shared=false      \
     185      ..</userinput></screen>
     186
     187    <para>Compile the package:</para>
     188
     189<screen><userinput remap="make">ninja \
     190      $(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
     191        build.ninja | awk '{ print $2 }')                              \
     192      $(realpath libudev.so --relative-to .)</userinput></screen>
     193
     194    <para>Install the package:</para>
     195
     196<screen><userinput remap="install">mkdir -pv /usr/lib32/pkgconfig &amp;&amp;
     197cp -av libudev.so{,*[0-9]} /usr/lib32/ &amp;&amp;
     198sed -e "s;/usr/lib;&amp;32;g" src/libudev/libudev.pc > /usr/lib32/pkgconfig/libudev.pc</userinput></screen>
     199
     200  </sect2><!-- m32 -->
     201
     202  <!-- - - - - - - - - - -->
     203  <!-- Multilib - x32bit -->
     204  <!-- - - - - - - - - - -->
     205  <sect2 arch="ml_x32,ml_all" role="installation">
     206    <title>Installation of Udev - x32bit</title>
     207    <para>Clean previous build (while still in the build directory):</para>
     208
     209<screen><userinput remap="pre">rm -rf *</userinput></screen>
     210
     211    <para>Prepare File for compilation:</para>
     212
     213<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
     214CC="gcc -mx32"                          \
     215CXX="g++ -mx32"                         \
     216CFLAGS+=" -Wno-error=shift-overflow"    \
     217CXXFLAGS+=" -Wno-error=shift-overflow"  \
     218LANG=en_US.UTF-8                        \
     219meson setup \
     220      --prefix=/usr                 \
     221      --buildtype=release           \
     222      -Dmode=release                \
     223      -Ddev-kvm-mode=0660           \
     224      -Dlink-udev-shared=false      \
     225      ..</userinput></screen>
     226
     227    <para>Compile the package:</para>
     228
     229<screen><userinput remap="make">ninja \
     230      $(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
     231        build.ninja | awk '{ print $2 }')                              \
     232      $(realpath libudev.so --relative-to .)</userinput></screen>
     233
     234    <para>Install the package:</para>
     235
     236<screen><userinput remap="install">mkdir -pv /usr/libx32/pkgconfig &amp;&amp;
     237cp -av libudev.so{,*[0-9]} /usr/libx32/ &amp;&amp;
     238sed -e "s;/usr/lib;&amp;x32;g" src/libudev/libudev.pc > /usr/libx32/pkgconfig/libudev.pc</userinput></screen>
     239
     240  </sect2><!-- mx32 -->
     241 
    163242  <sect2 id="conf-udev" role="configuration">
    164243    <title>Configuring Udev</title>
  • chapter08/util-linux.xml

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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    6565
    6666  </sect2>
     67
     68  <!-- - - - - - - - - - -->
     69  <!-- Multilib - 32bit  -->
     70  <!-- - - - - - - - - - -->
     71 
     72  <sect2 arch="ml_32,ml_all" role="installation">
     73    <title>Installation of Zstd - 32bit</title>
     74
     75    <para>Clean previous build:</para>
     76
     77<screen><userinput remap="pre">make clean</userinput></screen>
     78
     79    <para>Compile the package:</para>
     80
     81<screen><userinput remap="make">CC="gcc -m32" make prefix=/usr</userinput></screen>
     82
     83    <para>Install the package:</para>
     84
     85<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     86cp -Rv DESTDIR/usr/lib/* /usr/lib32/
     87sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc
     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 Zstd - x32bit</title>
     98
     99    <para>Clean previous build:</para>
     100
     101<screen><userinput remap="pre">make clean</userinput></screen>
     102
     103    <para>Compile the package:</para>
     104
     105<screen><userinput remap="make">CC="gcc -mx32" make prefix=/usr</userinput></screen>
     106
     107    <para>Install the package:</para>
     108
     109<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
     110cp -Rv DESTDIR/usr/lib/* /usr/libx32/
     111sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc
     112rm -rf DESTDIR</userinput></screen>
     113
     114  </sect2><!-- mx32 -->
    67115
    68116  <sect2 id="contents-zstd" role="content">
  • chapter10/kernel.xml

    r26d1178 rf8b6ce0  
    187187    </note>
    188188
     189    <note arch="ml_32,ml_x32,ml_all">
     190      <para>
     191        The kernel on a multilib system needs to be able to
     192        identify and start binaries compiled for different architectures
     193        than the default.
     194      </para>
     195
     196      <para arch="ml_32,ml_all">
     197        If support for any 32bit ABI was built, make sure that the option
     198        "IA32 Emulation" is selected. The option 'IA32 a.out support' is
     199        optional.
     200      </para>
     201
     202      <para arch="ml_x32,ml_all">
     203        If support for the x32bit ABI was built, make sure that the option
     204        "x32 ABI for 64-bit mode" is selected.
     205      </para>
     206
     207<screen arch="ml_32">Binary Emulations  ---&gt;
     208    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     209    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     210</screen>
     211<screen arch="ml_x32">Binary Emulations  ---&gt;
     212    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     213</screen>
     214<screen arch="ml_all">Binary Emulations  ---&gt;
     215    [*] IA32 Emulation [CONFIG_IA32_EMULATION]
     216    &lt;M&gt;   IA32 a.out support [CONFIG_IA32_AOUT]
     217    [*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
     218</screen>
     219    </note>
     220   
    189221    <variablelist>
    190222      <title>The rationale for the above configuration items:</title>
  • packages.ent

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

    r26d1178 rf8b6ce0  
    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

    r26d1178 rf8b6ce0  
    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.