Changes in / [d78b550:b1f6d8d]
- Files:
-
- 3 added
- 51 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
rd78b550 rb1f6d8d 35 35 endif 36 36 37 ifndef ARCH 38 ARCH = default 39 endif 40 ifneq ($(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 48 endif 49 37 50 book: validate profile-html 38 51 @echo "Generating chunked XHTML files at $(BASEDIR)/ ..." … … 130 143 --output $(RENDERTMP)/lfs-html2.xml \ 131 144 --stringparam profile.revision $(REV) \ 145 --stringparam profile.arch $(ARCH) \ 132 146 stylesheets/lfs-xsl/profile.xsl \ 133 147 index.xml … … 183 197 $(Q)xsltproc --nonet --xinclude \ 184 198 --stringparam profile.revision $(REV) \ 199 --stringparam profile.arch $(ARCH) \ 185 200 --output $(RENDERTMP)/md5sum.xml \ 186 201 stylesheets/lfs-xsl/profile.xsl \ -
chapter01/askforhelp.xml
rd78b550 rb1f6d8d 61 61 <itemizedlist> 62 62 <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> 64 64 </listitem> 65 65 <listitem> … … 76 76 </listitem> 77 77 <listitem> 78 <para>Note whether you have deviated from the book at all 78 <para>Note whether you have deviated from the book at all</para> 79 79 </listitem> 80 80 </itemizedlist> -
chapter01/changelog.xml
rd78b550 rb1f6d8d 11 11 <title>Changelog</title> 12 12 13 <para>This is version &version; of the Linux From Scratch book, dated13 <para>This is version &version;<phrase arch="ml_32,ml_x32,ml_all">&version;-multilib</phrase> of the Linux From Scratch book, dated 14 14 &releasedate;. If this book is more than six months old, a newer and better 15 15 version is probably already available. To find out, please check one of the -
chapter02/hostreqs.xml
rd78b550 rb1f6d8d 263 263 bash version-check.sh</userinput></screen> 264 264 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 ---> 270 [*] IA32 Emulation 271 <M> 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 266 287 </sect1> -
chapter03/packages.xml
rd78b550 rb1f6d8d 380 380 381 381 <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> 382 391 <term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term> 383 392 <listitem> -
chapter04/addinguser.xml
rd78b550 rb1f6d8d 85 85 x86_64) chown -v lfs $LFS/lib64 ;; 86 86 esac</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> 87 90 88 91 <note><para>In some host systems, the following <command>su</command> command does not complete -
chapter04/creatingminlayout.xml
rd78b550 rb1f6d8d 31 31 x86_64) mkdir -pv $LFS/lib64 ;; 32 32 esac</userinput></screen> 33 <screen arch="ml_32"><userinput>mkdir -pv $LFS/usr/lib32 34 ln -sv usr/lib32 $LFS/lib32</userinput></screen> 35 <screen arch="ml_x32"><userinput>mkdir -pv $LFS/usr/libx32 36 ln -sv usr/libx32 $LFS/libx32</userinput></screen> 37 <screen arch="ml_all"><userinput>mkdir -pv $LFS/usr/lib{,x}32 38 ln -sv usr/lib32 $LFS/lib32 39 ln -sv usr/libx32 $LFS/libx32</userinput></screen> 33 40 34 41 <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled -
chapter04/settingenviron.xml
rd78b550 rb1f6d8d 39 39 <filename>.bashrc</filename> file now:</para> 40 40 41 <screen ><userinput>cat > ~/.bashrc << "EOF"41 <screen arch="default"><userinput>cat > ~/.bashrc << "EOF" 42 42 <literal>set +h 43 43 umask 022 … … 50 50 CONFIG_SITE=$LFS/usr/share/config.site 51 51 export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</literal> 52 EOF</userinput></screen> 53 <screen arch="ml_32,ml_x32,ml_all"><userinput>cat > ~/.bashrc << "EOF" 54 <literal>set +h 55 umask 022 56 LFS=/mnt/lfs 57 LC_ALL=POSIX 58 LFS_TGT=x86_64-lfs-linux-gnu 59 LFS_TGT32=i686-lfs-linux-gnu 60 LFS_TGTX32=x86_64-lfs-linux-gnux32 61 PATH=/usr/bin 62 if [ ! -L /bin ]; then PATH=/bin:$PATH; fi 63 PATH=$LFS/tools/bin:$PATH 64 CONFIG_SITE=$LFS/usr/share/config.site 65 export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH</literal> 52 66 EOF</userinput></screen> 53 67 -
chapter05/binutils-pass1.xml
rd78b550 rb1f6d8d 71 71 <para>Now prepare Binutils for compilation:</para> 72 72 73 <screen ><userinput remap="configure">../configure --prefix=$LFS/tools \73 <screen arch="default"><userinput remap="configure">../configure --prefix=$LFS/tools \ 74 74 --with-sysroot=$LFS \ 75 75 --target=$LFS_TGT \ … … 77 77 --enable-gprofng=no \ 78 78 --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> 79 86 80 87 <variablelist> … … 133 140 </varlistentry> 134 141 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 135 149 </variablelist> 136 150 -
chapter05/gcc-pass1.xml
rd78b550 rb1f6d8d 63 63 mv -v mpc-&mpc-version; mpc</userinput></screen> 64 64 65 <para >On x86_64 hosts, set the default directory name for65 <para arch="default">On x86_64 hosts, set the default directory name for 66 66 64-bit libraries to <quote>lib</quote>:</para> 67 67 68 <screen ><userinput remap="pre">case $(uname -m) in68 <screen arch="default"><userinput remap="pre">case $(uname -m) in 69 69 x86_64) 70 70 sed -e '/m64=/s/lib64/lib/' \ … … 73 73 esac</userinput></screen> 74 74 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 75 83 <para>The GCC documentation recommends building GCC 76 84 in a dedicated build directory:</para> … … 81 89 <para>Prepare GCC for compilation:</para> 82 90 83 <screen ><userinput remap="configure">../configure \91 <screen arch="default"><userinput remap="configure">../configure \ 84 92 --target=$LFS_TGT \ 85 93 --prefix=$LFS/tools \ … … 101 109 --disable-libstdcxx \ 102 110 --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 103 138 <variablelist> 104 139 <title>The meaning of the configure options:</title> … … 157 192 </varlistentry> 158 193 159 <varlistentry >194 <varlistentry arch="default"> 160 195 <term><parameter>--disable-multilib</parameter></term> 161 196 <listitem> 162 197 <para>On x86_64, LFS does not support a multilib configuration. 163 198 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> 164 206 </listitem> 165 207 </varlistentry> -
chapter05/glibc.xml
rd78b550 rb1f6d8d 48 48 operation of the dynamic library loader:</para> 49 49 50 <screen ><userinput remap="pre">case $(uname -m) in50 <screen arch="default"><userinput remap="pre">case $(uname -m) in 51 51 i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3 52 52 ;; … … 55 55 ;; 56 56 esac</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 59 ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen> 57 60 58 61 <note> … … 86 89 <para>Next, prepare Glibc for compilation:</para> 87 90 88 <screen ><userinput remap="configure">../configure \91 <screen arch="default"><userinput remap="configure">../configure \ 89 92 --prefix=/usr \ 90 93 --host=$LFS_TGT \ … … 92 95 --enable-kernel=&min-kernel; \ 93 96 --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 \ 94 105 libc_cv_slibdir=/usr/lib</userinput></screen> 95 106 … … 204 215 <screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen> 205 216 206 <para >Note that for 32-bit machines, the interpreter name will be217 <para arch="default">Note that for 32-bit machines, the interpreter name will be 207 218 <filename>/lib/ld-linux.so.2</filename>.</para> 208 219 … … 232 243 </sect2> 233 244 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 259 find .. -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" \ 264 CXX="$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 283 cp -a DESTDIR/usr/lib32 $LFS/usr/ 284 install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \ 285 $LFS/usr/include/gnu/ 286 ln -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(){}' > dummy.c 295 $LFS_TGT-gcc -m32 dummy.c 296 readelf -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 331 find .. -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" \ 336 CXX="$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 355 cp -a DESTDIR/usr/libx32 $LFS/usr/ 356 install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \ 357 $LFS/usr/include/gnu/ 358 ln -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(){}' > dummy.c 366 $LFS_TGT-gcc -mx32 dummy.c 367 readelf -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 234 387 <sect2 role="content"> 235 388 <title/> -
chapter05/libstdc++.xml
rd78b550 rb1f6d8d 61 61 <para>Prepare Libstdc++ for compilation:</para> 62 62 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 \ 64 72 --host=$LFS_TGT \ 65 73 --build=$(../config.guess) \ … … 79 87 should be used instead of the one in 80 88 <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> 81 96 </listitem> 82 97 </varlistentry> -
chapter06/binutils-pass2.xml
rd78b550 rb1f6d8d 59 59 <para>Prepare Binutils for compilation:</para> 60 60 61 <screen ><userinput remap="configure">../configure \61 <screen arch="default"><userinput remap="configure">../configure \ 62 62 --prefix=/usr \ 63 63 --build=$(../config.guess) \ … … 68 68 --disable-werror \ 69 69 --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> 70 80 71 81 <variablelist> … … 86 96 <para>Enables 64-bit support (on hosts with smaller word sizes). 87 97 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> 88 105 </listitem> 89 106 </varlistentry> -
chapter06/gcc-pass2.xml
rd78b550 rb1f6d8d 58 58 mv -v mpc-&mpc-version; mpc</userinput></screen> 59 59 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 61 62 libraries to <quote>lib</quote>:</para> 62 63 63 <screen ><userinput remap="pre">case $(uname -m) in64 <screen arch="default"><userinput remap="pre">case $(uname -m) in 64 65 x86_64) 65 66 sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 … … 67 68 esac</userinput></screen> 68 69 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 69 77 <para>Override the building rule of libgcc and libstdc++ headers, to 70 78 allow building these libraries with POSIX threads support:</para> … … 83 91 <para>Now prepare GCC for compilation:</para> 84 92 85 <screen ><userinput remap="configure">../configure \93 <screen arch="default"><userinput remap="configure">../configure \ 86 94 --build=$(../config.guess) \ 87 95 --host=$LFS_TGT \ … … 101 109 --disable-libvtv \ 102 110 --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> 103 133 104 134 <variablelist> -
chapter06/ncurses.xml
rd78b550 rb1f6d8d 190 190 </sect2> 191 191 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" \ 205 CXX="$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 226 ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so 227 cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32 228 rm -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" \ 245 CXX="$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 266 ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so 267 cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32 268 rm -rf DESTDIR</userinput></screen> 269 270 </sect2><!-- mx32 --> 271 192 272 <sect2 role="content"> 193 273 <title/> -
chapter07/changingowner.xml
rd78b550 rb1f6d8d 39 39 esac</userinput></screen> 40 40 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 41 46 </sect1> -
chapter07/cleanup.xml
rd78b550 rb1f6d8d 24 24 failures. Remove those files now:</para> 25 25 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"> 27 find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32"> 28 find /usr/libx32 -name \*.la -delete</userinput><userinput arch="ml_all"> 29 find /usr/lib{,x}32 -name \*.la -delete</userinput></screen> 27 30 28 31 <para> -
chapter07/creatingdirs.xml
rd78b550 rb1f6d8d 42 42 install -dv -m 1777 /tmp /var/tmp</userinput></screen> 43 43 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 44 47 <para>Directories are, by default, created with permission mode 755, but 45 48 this is not desirable everywhere. In the commands above, two -
chapter07/util-linux.xml
rd78b550 rb1f6d8d 127 127 </sect2> 128 128 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 165 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 166 rm -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 206 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 207 rm -rf DESTDIR</userinput></screen> 208 209 </sect2><!-- mx32 --> 210 129 211 <sect2 role="content"> 130 212 <title/> -
chapter08/acl.xml
rd78b550 rb1f6d8d 64 64 65 65 </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 94 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 95 rm -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 126 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 127 rm -rf DESTDIR</userinput></screen> 128 129 </sect2><!-- mx32 --> 66 130 67 131 <sect2 id="contents-acl" role="content"> -
chapter08/attr.xml
rd78b550 rb1f6d8d 65 65 </sect2> 66 66 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 94 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 95 rm -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 126 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 127 rm -rf DESTDIR</userinput></screen> 128 129 </sect2><!-- mx32 --> 130 67 131 <sect2 id="contents-attr" role="content"> 68 132 <title>Contents of Attr</title> -
chapter08/binutils.xml
rd78b550 rb1f6d8d 50 50 <para>Prepare Binutils for compilation:</para> 51 51 52 <screen ><userinput remap="configure">../configure --prefix=/usr \52 <screen arch="default"><userinput remap="configure">../configure --prefix=/usr \ 53 53 --sysconfdir=/etc \ 54 54 --enable-gold \ … … 59 59 --enable-64-bit-bfd \ 60 60 --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 61 72 <variablelist> 62 73 <title>The meaning of the configure parameters:</title> … … 90 101 <para>Enables 64-bit support (on hosts with narrower word sizes). 91 102 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> 92 110 </listitem> 93 111 </varlistentry> -
chapter08/bzip2.xml
rd78b550 rb1f6d8d 103 103 104 104 </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} 120 make -f Makefile-libbz2_so 121 make 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 126 ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so 127 ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1 128 ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0 129 install -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} 147 make -f Makefile-libbz2_so 148 make 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 153 ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so 154 ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1 155 ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0 156 install -Dm644 libbz2.a /usr/libx32/libbz2.a</userinput></screen> 157 158 </sect2><!-- mx32 --> 105 159 106 160 <sect2 id="contents-bzip2" role="content"> -
chapter08/chapter08.xml
rd78b550 rb1f6d8d 34 34 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/> 35 35 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/> 36 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/> 36 37 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/> 37 38 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/> -
chapter08/cleanup.xml
rd78b550 rb1f6d8d 22 22 builds. Remove those files now:</para> 23 23 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"> 25 find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32,ml_all"> 26 find /usr/libx32 -name \*.la -delete</userinput></screen> 25 27 26 28 <para>For more information about libtool archive files, see the <ulink -
chapter08/expat.xml
rd78b550 rb1f6d8d 66 66 </sect2> 67 67 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 79 make 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 96 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 97 rm -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 112 make 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 129 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 130 rm -rf DESTDIR</userinput></screen> 131 132 </sect2><!-- mx32 --> 133 68 134 <sect2 id="contents-expat" role="content"> 69 135 <title>Contents of Expat</title> -
chapter08/file.xml
rd78b550 rb1f6d8d 60 60 </sect2> 61 61 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 87 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 88 rm -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 117 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 118 rm -rf DESTDIR</userinput></screen> 119 120 </sect2><!-- mx32 --> 62 121 63 122 <sect2 id="contents-file" role="content"> -
chapter08/gcc.xml
rd78b550 rb1f6d8d 58 58 libraries to <quote>lib</quote>:</para> 59 59 60 <screen ><userinput remap="pre">case $(uname -m) in60 <screen arch="default"><userinput remap="pre">case $(uname -m) in 61 61 x86_64) 62 62 sed -e '/m64=/s/lib64/lib/' \ … … 65 65 esac</userinput></screen> 66 66 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 67 74 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para> 68 75 … … 72 79 <para>Prepare GCC for compilation:</para> 73 80 74 <screen ><userinput remap="configure">../configure --prefix=/usr \81 <screen arch="default"><userinput remap="configure">../configure --prefix=/usr \ 75 82 LD=ld \ 76 83 --enable-languages=c,c++ \ … … 80 87 --disable-bootstrap \ 81 88 --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 \ 82 103 --with-system-zlib</userinput></screen> 83 104 … … 304 325 SEARCH_DIR("/usr/lib");</computeroutput></screen> 305 326 306 <para >A 32-bit system may use a few other directories. For example, here327 <para arch="default">A 32-bit system may use a few other directories. For example, here 307 328 is the output from an i686 machine:</para> 308 329 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") 310 332 SEARCH_DIR("/usr/local/lib32") 311 333 SEARCH_DIR("/lib32") -
chapter08/glibc.xml
rd78b550 rb1f6d8d 70 70 <para>Prepare Glibc for compilation:</para> 71 71 72 <screen ><userinput remap="configure">../configure --prefix=/usr \72 <screen arch="default"><userinput remap="configure">../configure --prefix=/usr \ 73 73 --disable-werror \ 74 74 --enable-kernel=&min-kernel; \ 75 75 --enable-stack-protector=strong \ 76 76 --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 \ 77 84 libc_cv_slibdir=/usr/lib</userinput></screen> 78 85 … … 469 476 </sect2> 470 477 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 ./* 492 find .. -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 515 cp -a DESTDIR/usr/lib32/* /usr/lib32/ 516 install -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 519 ln -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" >> /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(){}' > dummy.c 532 gcc -m32 dummy.c 533 readelf -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 ./* 568 find .. -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 591 cp -a DESTDIR/usr/libx32/* /usr/libx32/ 592 install -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 595 ln -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" >> /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(){}' > dummy.c 607 gcc -mx32 dummy.c 608 readelf -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 471 628 <sect2 id="contents-glibc" role="content"> 472 629 <title>Contents of Glibc</title> -
chapter08/gmp.xml
rd78b550 rb1f6d8d 125 125 </sect2> 126 126 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 142 cp -v configfsf.sub config.sub</userinput></screen> 143 144 <para>Prepare GMP for compilation:</para> 145 146 <screen><userinput remap="configure">ABI="32" \ 147 CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \ 148 CXXFLAGS="$CFLAGS" \ 149 PKG_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 175 make</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>&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 194 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 195 cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/ 196 rm -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 215 cp -v configfsf.sub config.sub</userinput></screen> 216 217 <para>Prepare GMP for compilation:</para> 218 219 <screen><userinput remap="configure">ABI="x32" \ 220 CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \ 221 CXXFLAGS="$CFLAGS" \ 222 PKG_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 234 make</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>&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 253 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 254 cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/ 255 rm -rf DESTDIR</userinput></screen> 256 257 </sect2><!-- mx32 --> 258 127 259 <sect2 id="contents-gmp" role="content"> 128 260 <title>Contents of GMP</title> -
chapter08/kmod.xml
rd78b550 rb1f6d8d 98 98 99 99 </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 112 make 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 134 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 135 rm -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 150 make 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 172 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 173 rm -rf DESTDIR</userinput></screen> 174 175 </sect2><!-- mx32 --> 100 176 101 177 <sect2 id="contents-kmod" role="content"> -
chapter08/libcap.xml
rd78b550 rb1f6d8d 76 76 </sect2> 77 77 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 96 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 97 sed -e "s|^libdir=.*|libdir=/usr/lib32|" -i /usr/lib32/pkgconfig/lib{cap,psx}.pc 98 chmod -v 755 /usr/lib32/libcap.so.&libcap-version; 99 rm -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 121 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 122 sed -e "s|^libdir=.*|libdir=/usr/libx32|" -i /usr/libx32/pkgconfig/lib{cap,psx}.pc 123 chmod -v 755 /usr/libx32/libcap.so.&libcap-version; 124 rm -rf DESTDIR</userinput></screen> 125 126 </sect2><!-- mx32 --> 127 78 128 <sect2 id="contents-libcap" role="content"> 79 129 <title>Contents of Libcap</title> -
chapter08/libelf.xml
rd78b550 rb1f6d8d 67 67 </sect2> 68 68 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 96 install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc 97 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 98 rm -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 129 install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc 130 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 131 rm -rf DESTDIR</userinput></screen> 132 133 </sect2><!-- mx32 --> 134 69 135 <sect2 id="contents-elfutils" role="content"> 70 136 <title>Contents of Libelf</title> -
chapter08/libffi.xml
rd78b550 rb1f6d8d 97 97 </sect2> 98 98 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 130 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 131 rm -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 166 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 167 rm -rf DESTDIR</userinput></screen> 168 169 </sect2><!-- mx32 --> 170 99 171 <sect2 id="contents-libffi" role="content"> 100 172 <title>Contents of Libffi</title> … … 127 199 128 200 </sect1> 129 -
chapter08/libtool.xml
rd78b550 rb1f6d8d 79 79 </sect2> 80 80 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 106 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 107 rm -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 136 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 137 rm -rf DESTDIR</userinput></screen> 138 139 </sect2><!-- mx32 --> 81 140 82 141 <sect2 id="contents-libtool" role="content"> -
chapter08/libxcrypt.xml
rd78b550 rb1f6d8d 116 116 </sect2> 117 117 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/ && 146 make install-pkgconfigDATA && 147 ln -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/ && 179 make install-pkgconfigDATA && 180 ln -svf libxcrypt.pc /usr/libx32/pkgconfig/libcrypt.pc</userinput></screen> 181 182 </sect2><!-- mx32 --> 183 118 184 <sect2 id="contents-libxcrypt" role="content"> 119 185 <title>Contents of Libxcrypt</title> -
chapter08/ncurses.xml
rd78b550 rb1f6d8d 172 172 173 173 <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 \ 178 179 --without-cxx-binding \ 179 180 --with-abi-version=5 … … 183 184 184 185 </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 219 mkdir -p DESTDIR/usr/lib32/pkgconfig 220 for 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 224 done 225 rm -vf DESTDIR/usr/lib32/libcursesw.so 226 echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so 227 ln -sfv libncurses.so DESTDIR/usr/lib32/libcurses.so 228 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 229 rm -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 264 mkdir -p DESTDIR/usr/libx32/pkgconfig 265 for 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 269 done 270 rm -vf DESTDIR/usr/libx32/libcursesw.so 271 echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so 272 ln -sfv libncurses.so DESTDIR/usr/libx32/libcurses.so 273 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 274 rm -rf DESTDIR</userinput></screen> 275 276 </sect2><!-- mx32 --> 185 277 186 278 <sect2 id="contents-ncurses" role="content"> -
chapter08/openssl.xml
rd78b550 rb1f6d8d 126 126 127 127 </sect2> 128 129 <!-- - - - - - - - - - --> 130 <!-- Multilib - 32bit --> 131 <!-- - - - - - - - - - --> 132 133 <sect2 arch="ml_32,ml_all" role="installation"> 134 <title>Installation of OpenSSL - 32bit</title> 135 136 <para>Clean previous build:</para> 137 138 <screen><userinput remap="pre">make distclean</userinput></screen> 139 140 <para>Prepare OpenSSL for compilation:</para> 141 142 <screen><userinput remap="configure">./config --prefix=/usr \ 143 --openssldir=/etc/ssl \ 144 --libdir=lib32 \ 145 shared \ 146 zlib-dynamic \ 147 linux-x86</userinput></screen> 148 149 <para>Compile the package:</para> 150 151 <screen><userinput remap="make">make</userinput></screen> 152 153 <para>Install the package:</para> 154 155 <screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install 156 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 157 rm -rf DESTDIR</userinput></screen> 158 159 </sect2><!-- m32 --> 160 161 <!-- - - - - - - - - - --> 162 <!-- Multilib - x32bit --> 163 <!-- - - - - - - - - - --> 164 165 <sect2 arch="ml_x32,ml_all" role="installation"> 166 <title>Installation of OpenSSL - x32bit</title> 167 168 <para>Clean previous build:</para> 169 170 <screen><userinput remap="pre">make distclean</userinput></screen> 171 172 <para>Prepare OpenSSL for compilation:</para> 173 174 <screen><userinput remap="configure">./config --prefix=/usr \ 175 --openssldir=/etc/ssl \ 176 --libdir=libx32 \ 177 shared \ 178 zlib-dynamic \ 179 linux-x32</userinput></screen> 180 181 <para>Compile the package:</para> 182 183 <screen><userinput remap="make">make</userinput></screen> 184 185 <para>Install the package:</para> 186 187 <screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install 188 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 189 rm -rf DESTDIR</userinput></screen> 190 191 </sect2><!-- mx32 --> 128 192 129 193 <sect2 id="contents-openssl" role="content"> -
chapter08/pkgconf.xml
rd78b550 rb1f6d8d 72 72 <screen><userinput remap="install">ln -sv pkgconf /usr/bin/pkg-config 73 73 ln -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> 74 79 80 <screen arch="ml_32,ml_x32,ml_all"><userinput remap="install">ln -sv pkgconf /usr/bin/i686-pc-linux-gnu-pkg-config 81 ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnux32-pkg-config 82 ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnu-pkg-config 83 84 mkdir -pv /usr/share/pkgconfig/personality.d 85 86 cat > /usr/share/pkgconfig/personality.d/i686-pc-linux-gnu.personality <<EOF 87 Triplet: i686-pc-linux-gnu 88 SysrootDir: / 89 DefaultSearchPaths: /usr/lib32/pkgconfig:/usr/share/pkgconfig 90 SystemIncludePaths: /usr/include 91 SystemLibraryPaths: /usr/lib32 92 EOF 93 94 cat > /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnux32.personality <<EOF 95 Triplet: x86_64-pc-linux-gnux32 96 SysrootDir: / 97 DefaultSearchPaths: /usr/libx32/pkgconfig:/usr/share/pkgconfig 98 SystemIncludePaths: /usr/include 99 SystemLibraryPaths: /usr/libx32 100 EOF 101 102 cat > /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnu.personality <<EOF 103 Triplet: x86_64-pc-linux-gnu 104 SysrootDir: / 105 DefaultSearchPaths: /usr/lib/pkgconfig:/usr/share/pkgconfig 106 SystemIncludePaths: /usr/include 107 SystemLibraryPaths: /usr/lib 108 EOF 109 </userinput></screen> 110 --> 75 111 </sect2> 76 112 -
chapter08/readline.xml
rd78b550 rb1f6d8d 105 105 </sect2> 106 106 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 134 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 135 rm -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 166 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 167 rm -rf DESTDIR</userinput></screen> 168 169 </sect2><!-- mx32 --> 170 107 171 <sect2 id="contents-readline" role="content"> 108 172 <title>Contents of Readline</title> -
chapter08/stripping.xml
rd78b550 rb1f6d8d 77 77 78 78 cd /usr/lib 79 80 79 for LIB in $save_usrlib; do 81 80 objcopy --only-keep-debug $LIB $LIB.dbg … … 85 84 install -vm755 /tmp/$LIB /usr/lib 86 85 rm /tmp/$LIB 87 done 86 done</userinput> 87 <userinput arch="ml_32,ml_all"> 88 cd /usr/lib32 89 for 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 96 done</userinput> 97 <userinput arch="ml_x32,ml_all"> 98 cd /usr/libx32 99 for 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 106 done</userinput><userinput> 88 107 89 108 online_usrbin="bash find strip" … … 109 128 install -vm755 /tmp/$LIB /usr/lib 110 129 rm /tmp/$LIB 111 done 130 done</userinput><userinput arch="ml_32,ml_all"> 131 for LIB in $online_usrlib; do 132 cp /usr/lib32/$LIB /tmp/$LIB 133 strip --strip-unneeded /tmp/$LIB 134 install -vm755 /tmp/$LIB /usr/lib32 135 rm /tmp/$LIB 136 done</userinput><userinput arch="ml_x32,ml_all"> 137 for LIB in $online_usrlib; do 138 cp /usr/libx32/$LIB /tmp/$LIB 139 strip --strip-unneeded /tmp/$LIB 140 install -vm755 /tmp/$LIB /usr/libx32 141 rm /tmp/$LIB 142 done</userinput><userinput> 112 143 113 144 for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ … … 120 151 ;; 121 152 esac 122 done 153 done</userinput><userinput arch="ml_32,ml_all"> 154 for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg) \ 155 $(find /usr/lib32 -type f -name \*.a); do 156 case "$online_usrbin $online_usrlib $save_usrlib" in 157 *$(basename $i)* ) 158 ;; 159 * ) strip --strip-unneeded $i 160 ;; 161 esac 162 done</userinput><userinput arch="ml_x32,ml_all"> 163 for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg) \ 164 $(find /usr/libx32 -type f -name \*.a); do 165 case "$online_usrbin $online_usrlib $save_usrlib" in 166 *$(basename $i)* ) 167 ;; 168 * ) strip --strip-unneeded $i 169 ;; 170 esac 171 done</userinput><userinput> 123 172 124 173 unset BIN LIB save_usrlib online_usrbin online_usrlib -
chapter08/systemd.xml
rd78b550 rb1f6d8d 222 222 223 223 </sect2> 224 225 <!-- - - - - - - - - - --> 226 <!-- Multilib - 32bit --> 227 <!-- - - - - - - - - - --> 228 229 <sect2 arch="ml_32,ml_all" role="installation"> 230 <title>Installation of systemd - 32-bit</title> 231 232 <para>Clean previous build:</para> 233 234 <screen><userinput remap="pre">rm -rf *</userinput></screen> 235 236 <para>Create a symlink to work around missing xsltproc:</para> 237 238 <!-- screen><userinput remap="pre">ln -sf /tools/bin/true /usr/bin/xsltproc</userinput></screen --> 239 <screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen> 240 241 <!-- with cross-LFS we have util-linux in place: 242 <para>Because we have not yet installed the final version of Util-Linux, 243 create links to the libraries in the approprite location:</para> 244 245 <screen><userinput remap="pre">for file in /tools/lib32/lib{blkid,mount,uuid}*; do 246 ln -sf $file /usr/lib32/ 247 done</userinput></screen> 248 --> 249 250 <para>Prepare systemd for compilation:</para> 251 252 <screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \ 253 CC="gcc -m32 -march=i686" \ 254 CXX="g++ -m32 -march=i686" \ 255 LANG=en_US.UTF-8 \ 256 meson --prefix=/usr \ 257 --sysconfdir=/etc \ 258 --localstatedir=/var \ 259 --libdir=/usr/lib32 \ 260 -Drootlibdir=/usr/lib32 \ 261 -Dblkid=true \ 262 -Ddefault-dnssec=no \ 263 -Dfirstboot=false \ 264 -Dinstall-tests=false \ 265 -Dldconfig=false \ 266 -Dsysusers=false \ 267 -Db_lto=false \ 268 -Drpmmacrosdir=no \ 269 -Dhomed=false \ 270 -Duserdb=false \ 271 -Dman=false \ 272 -Dmode=release \ 273 ..</userinput></screen> 274 275 <para>Compile the package:</para> 276 277 <screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen> 278 279 <para>Install the package:</para> 280 281 <screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install 282 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 283 rm -rf DESTDIR 284 rm -f /usr/bin/xsltproc</userinput></screen> 285 286 </sect2><!-- m32 --> 287 288 <!-- - - - - - - - - - --> 289 <!-- Multilib - x32bit --> 290 <!-- - - - - - - - - - --> 291 292 <sect2 arch="ml_x32,ml_all" role="installation"> 293 <title>Installation of systemd - x32-bit</title> 294 295 <para>Clean previous build:</para> 296 297 <screen><userinput remap="pre">rm -rf *</userinput></screen> 298 299 <para>Create a symlink to work around missing xsltproc:</para> 300 301 <screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen> 302 <!-- 303 <para>Fix an issue on x32:</para> 304 305 <screen><userinput remap="pre">sed '/log_debug/s@PRI_TIMEX@PRIi64@' -i src/timesync/timesyncd-manager.c 306 sed '/long drift_freq;/s@long @int64_t @' -i src/timesync/timesyncd-manager.h</userinput></screen> 307 --> 308 <para>Prepare systemd for compilation:</para> 309 310 <screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \ 311 CC="gcc -mx32" \ 312 CXX="g++ -mx32" \ 313 CFLAGS+=" -Wno-error=shift-overflow" \ 314 CXXFLAGS+=" -Wno-error=shift-overflow" \ 315 LANG=en_US.UTF-8 \ 316 meson --prefix=/usr \ 317 --sysconfdir=/etc \ 318 --localstatedir=/var \ 319 --libdir=/usr/libx32 \ 320 -Drootlibdir=/usr/libx32 \ 321 -Dblkid=true \ 322 -Ddefault-dnssec=no \ 323 -Dfirstboot=false \ 324 -Dinstall-tests=false \ 325 -Dldconfig=false \ 326 -Dsysusers=false \ 327 -Db_lto=false \ 328 -Drpmmacrosdir=no \ 329 -Dhomed=false \ 330 -Duserdb=false \ 331 -Dman=false \ 332 -Dmode=release \ 333 ..</userinput></screen> 334 335 <para>Compile the package:</para> 336 337 <screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen> 338 339 <para>Install the package:</para> 340 341 <screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install 342 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 343 rm -rf DESTDIR 344 rm -f /usr/bin/xsltproc</userinput></screen> 345 346 </sect2><!-- mx32 --> 224 347 225 348 <sect2 id="contents-systemd" role="content"> -
chapter08/udev.xml
rd78b550 rb1f6d8d 161 161 </sect2> 162 162 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" \ 176 CC="gcc -m32 -march=i686" \ 177 CXX="g++ -m32 -march=i686" \ 178 LANG=en_US.UTF-8 \ 179 meson 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 && 197 cp -av libudev.so{,*[0-9]} /usr/lib32/ && 198 sed -e "s;/usr/lib;&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" \ 214 CC="gcc -mx32" \ 215 CXX="g++ -mx32" \ 216 CFLAGS+=" -Wno-error=shift-overflow" \ 217 CXXFLAGS+=" -Wno-error=shift-overflow" \ 218 LANG=en_US.UTF-8 \ 219 meson 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 && 237 cp -av libudev.so{,*[0-9]} /usr/libx32/ && 238 sed -e "s;/usr/lib;&x32;g" src/libudev/libudev.pc > /usr/libx32/pkgconfig/libudev.pc</userinput></screen> 239 240 </sect2><!-- mx32 --> 241 163 242 <sect2 id="conf-udev" role="configuration"> 164 243 <title>Configuring Udev</title> -
chapter08/util-linux.xml
rd78b550 rb1f6d8d 125 125 --> 126 126 </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 189 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 190 rm -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 255 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 256 rm -rf DESTDIR</userinput></screen> 257 258 </sect2><!-- mx32 --> 127 259 128 260 <sect2 id="contents-utillinux" role="content"> -
chapter08/xz.xml
rd78b550 rb1f6d8d 68 68 69 69 </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 97 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 98 rm -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 128 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 129 rm -rf DESTDIR</userinput></screen> 130 131 </sect2><!-- mx32 --> 70 132 71 133 <sect2 id="contents-xz" role="content"> -
chapter08/zlib.xml
rd78b550 rb1f6d8d 64 64 </sect2> 65 65 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 90 cp -Rv DESTDIR/usr/lib32/* /usr/lib32 91 rm -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 117 cp -Rv DESTDIR/usr/libx32/* /usr/libx32 118 rm -rf DESTDIR</userinput></screen> 119 120 </sect2><!-- mx32 --> 121 66 122 <sect2 id="contents-zlib" role="content"> 67 123 <title>Contents of Zlib</title> -
chapter08/zstd.xml
rd78b550 rb1f6d8d 65 65 66 66 </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 86 cp -Rv DESTDIR/usr/lib/* /usr/lib32/ 87 sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc 88 rm -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 110 cp -Rv DESTDIR/usr/lib/* /usr/libx32/ 111 sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc 112 rm -rf DESTDIR</userinput></screen> 113 114 </sect2><!-- mx32 --> 67 115 68 116 <sect2 id="contents-zstd" role="content"> -
chapter10/kernel.xml
rd78b550 rb1f6d8d 186 186 </note> 187 187 188 <note arch="ml_32,ml_x32,ml_all"> 189 <para> 190 The kernel on a multilib system needs to be able to 191 identify and start binaries compiled for different architectures 192 than the default. 193 </para> 194 195 <para arch="ml_32,ml_all"> 196 If support for any 32bit ABI was built, make sure that the option 197 "IA32 Emulation" is selected. The option 'IA32 a.out support' is 198 optional. 199 </para> 200 201 <para arch="ml_x32,ml_all"> 202 If support for the x32bit ABI was built, make sure that the option 203 "x32 ABI for 64-bit mode" is selected. 204 </para> 205 206 <screen arch="ml_32">Binary Emulations ---> 207 [*] IA32 Emulation [CONFIG_IA32_EMULATION] 208 <M> IA32 a.out support [CONFIG_IA32_AOUT] 209 </screen> 210 <screen arch="ml_x32">Binary Emulations ---> 211 [*] x32 ABI for 64-bit mode [CONFIG_X86_X32] 212 </screen> 213 <screen arch="ml_all">Binary Emulations ---> 214 [*] IA32 Emulation [CONFIG_IA32_EMULATION] 215 <M> IA32 a.out support [CONFIG_IA32_AOUT] 216 [*] x32 ABI for 64-bit mode [CONFIG_X86_X32] 217 </screen> 218 </note> 219 188 220 <variablelist> 189 221 <title>The rationale for the above configuration items:</title> -
packages.ent
rd78b550 rb1f6d8d 352 352 <!ENTITY iproute2-fin-sbu "0.1 SBU"> 353 353 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 354 363 <!ENTITY jinja2-version "3.1.2"> 355 364 <!ENTITY jinja2-size "262 KB"> -
prologue/bookinfo.xml
rd78b550 rb1f6d8d 8 8 <bookinfo> 9 9 <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> 11 11 <subtitle>Published &releasedate;</subtitle> 12 12 … … 29 29 <firstname>Editor: DJ</firstname> 30 30 <surname>Lucas</surname> 31 </author> 32 33 <author arch="ml_32,ml_x32,ml_all"> 34 <firstname>Editor: Thomas</firstname> 35 <surname>Trepl</surname> 31 36 </author> 32 37 </authorgroup> -
prologue/preface.xml
rd78b550 rb1f6d8d 16 16 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/> 17 17 <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"/> 18 19 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/> 19 20 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
Note:
See TracChangeset
for help on using the changeset viewer.