Ignore:
Timestamp:
03/31/2021 10:41:31 AM (3 years ago)
Author:
Xℹ Ruoyao <xry111@…>
Branches:
ml-11.0, multilib
Children:
6702623
Parents:
989524c
git-author:
Thomas Trepl <thomas@…> (04/01/2019 05:00:45 PM)
git-committer:
Xℹ Ruoyao <xry111@…> (03/31/2021 10:41:31 AM)
Message:

First apply of multilib-patch of April 1st, 2019

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/multilib@11566 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter05/glibc.xml

    r989524c rb3f1ebb3  
    8383      </varlistentry>
    8484
     85      <varlistentry arch="multilib">
     86        <term><parameter>--enable-multi-arch</parameter></term>
     87        <listitem>
     88          <para>Enables glibc for multiarch environments.</para>
     89        </listitem>
     90      </varlistentry>
     91
    8592      <varlistentry>
    8693        <term><parameter>--with-headers=/tools/include</parameter></term>
     
    185192  </sect2>
    186193
     194  <sect2 arch="multilib" role="installation">
     195    <title>Installation of Glibc 32-bit</title>
     196
     197    <para>Clean the build directory for redoing glibc for 32-bit:</para>
     198<screen><userinput remap="pre">mkdir ../build32
     199cd ../build32</userinput></screen>
     200
     201    <para>Rebuild glibc for 32-bit:</para>
     202<screen><userinput remap="configure">echo slibdir=/tools/lib32 &gt; configparms
     203BUILD_CC="gcc -m32"               \
     204CC="${LFS_TGT}-gcc -m32"          \
     205CXX="${LFS_TGT}-g++ -m32"         \
     206AR="${LFS_TGT}-ar"                \
     207RANLIB="${LFS_TGT}-ranlib"        \
     208../configure --prefix=/tools                    \
     209             --build=$(../scripts/config.guess) \
     210             --host=${LFS_TGT32}                \
     211             --enable-kernel=&min-kernel;             \
     212             --enable-multi-arch                \
     213             --libdir=/tools/lib32              \
     214             --libexecdir=/tools/lib32          \
     215             --with-headers=/tools/include      \
     216             --with-binutils=/tools/bin         \
     217             libc_cv_forced_unwind=yes          \
     218             libc_cv_c_cleanup=yes</userinput></screen>
     219
     220    <para>Now compile the 32-bit version of glibc:</para>
     221<screen><userinput remap="make">make</userinput></screen>
     222
     223    <para>Install 32-bit version of glibc:</para>
     224<screen><userinput remap="install">make install_root="${PWD}/DESTDIR" install
     225install -vdm755 /tools/lib32
     226cp -Rv DESTDIR/tools/lib32/* /tools/lib32
     227install -vm644 DESTDIR/tools/include/gnu/{lib-names,stubs}-32.h \
     228               /tools/include/gnu/
     229ln -svf /tools/lib32/ld-linux.so.2 /tools/lib/
     230cd ..</userinput></screen>
     231
     232  </sect2>
     233
     234  <sect2 arch="multilib" role="installation">
     235    <title>Installation of Glibc x32-bit</title>
     236
     237    <para>Create a build directory for redoing glibc for x32-bit:</para>
     238<screen><userinput remap="pre">mkdir build32x
     239cd build32x</userinput></screen>
     240
     241    <para>Rebuild glibc for x32-bit:</para>
     242<screen><userinput remap="configure">echo slibdir=/tools/libx32 &gt; configparms
     243BUILD_CC="gcc -mx32"              \
     244CC="${LFS_TGT}-gcc -mx32"         \
     245CXX="${LFS_TGT}-g++ -mx32"        \
     246AR="${LFS_TGT}-ar"                \
     247RANLIB="${LFS_TGT}-ranlib"        \
     248../configure --prefix=/tools                    \
     249             --build=$(../scripts/config.guess) \
     250             --host=${LFS_TGTX32}               \
     251             --enable-kernel=&min-kernel;             \
     252             --enable-multi-arch                \
     253             --libdir=/tools/libx32             \
     254             --libexecdir=/tools/libx32         \
     255             --with-headers=/tools/include      \
     256             --with-binutils=/tools/bin         \
     257             libc_cv_forced_unwind=yes          \
     258             libc_cv_c_cleanup=yes</userinput></screen>
     259
     260    <para>Now compile the x32-bit version of glibc:</para>
     261<screen><userinput remap="make">make</userinput></screen>
     262
     263    <para>Install x32-bit version of glibc:</para>
     264<screen><userinput remap="install">make install_root="${PWD}/DESTDIR" install
     265install -vdm755 /tools/libx32
     266cp -Rv DESTDIR/tools/libx32/* /tools/libx32
     267install -vm644 DESTDIR/tools/include/gnu/lib-names-x32.h \
     268               /tools/include/gnu/
     269[ -e DESTDIR/tools/include/gnu/stubs-x32.h ] \
     270  &amp;&amp; install -vm644 DESTDIR/tools/include/gnu/stubs-x32.h /tools/include/gnu/ \
     271  || ln -v /tools/include/gnu/stubs-64.h /tools/include/gnu/stubs-x32.h
     272ln -svf /tools/libx32/ld-linux-x32.so.2 /tools/lib/</userinput></screen>
     273<!-- For whatever reason the stubs-x32.h doesn't get created. The 'ln' above is
     274just a "brute force" workaraound - by copying the stubs-64.h file. -->
     275
     276  <caution>
     277    <para>At this point, it is imperative to stop and ensure that the basic
     278    functions (compiling and linking) of the new toolchain are working as
     279    expected. To perform a sanity check, run the following commands:</para>
     280
     281<screen><userinput>echo 'int main(){}' &gt; dummy.c
     282$LFS_TGT-gcc -m32 dummy.c
     283readelf -l a.out | grep ': /tools'</userinput></screen>
     284
     285    <para>If everything is working correctly, there should be no errors,
     286    and the output of the last command will be of the form:</para>
     287
     288<screen><computeroutput>[Requesting program interpreter: /tools/lib/ld-linux.so.2]</computeroutput></screen>
     289
     290    <para>Redo test for x32-ABI:</para>
     291
     292<screen><userinput>echo 'int main(){}' &gt; dummy.c
     293$LFS_TGT-gcc -mx32 dummy.c
     294readelf -l a.out | grep ': /tools'</userinput></screen>
     295
     296    <para>Output should be like:</para>
     297
     298<screen><computeroutput>[Requesting program interpreter: /tools/lib/ld-linux-x32.so.2]</computeroutput></screen>
     299
     300    <para>If the output is not shown as above or there was no output at all,
     301    then something is wrong. Investigate and retrace the steps to find out
     302    where the problem is and correct it. This issue must be resolved before
     303    continuing on.</para>
     304
     305    <para>Once all is well, clean up the test files:</para>
     306
     307<screen><userinput>rm -v dummy.c a.out</userinput></screen>
     308
     309  </caution>
     310  </sect2>
     311 
    187312  <sect2 role="content">
    188313    <title/>
Note: See TracChangeset for help on using the changeset viewer.