aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@mengyan1223.wang>2022-02-10 20:13:21 +0800
committerXi Ruoyao <xry111@mengyan1223.wang>2022-02-10 21:05:33 +0800
commit426913ea08640343690e423fa521392d44595a9c (patch)
tree27cbad01299a49bdd13bdbbd785576fead8b4b3e /chapter06
parentb35ab48b26143c7dffdb101d98bf62cdad7451ee (diff)
binutils-pass2: workaround "binaries link to host libraries" issue
A very old libtool copy (2009-11-29) is shipped in binutils tarball. It does not support sysroot, so the cross-built binutils binaries may link to libraries from the host distro, if certain libraries are available. The ideal solution should be updating libtool, as libtool-2.4.6 (in LFS) has sysroot support. However, updating libtool for binutils is not trivial: it would require to rerun autoconf and binutils building system sticks to autoconf-2.69. Another issue is the sysroot support for libtool has introduced a configure option "--with-sysroot", which conflicts with an already existing option with the same name in GCC and binutils building system (we are using the GCC/binutils version of --with-sysroot in chapter 5). GCC building system has --with-build-sysroot (we are using this for GCC pass 2) for this issue. Binutils copied GCC building system, but it does not respect --with-build-sysroot. So for now we just edit libtool code to prevent "-L/usr/lib" in $LFS_TGT_gcc command line. It should fix the issue about host libiberty (reported in #lfs-support) as well, but it still need to be confirmed by someone having such a host. Tested with a jhalfs run on LFS.
Diffstat (limited to 'chapter06')
-rw-r--r--chapter06/binutils-pass2.xml16
-rw-r--r--chapter06/chapter06.xml1
-rw-r--r--chapter06/zlib.xml67
3 files changed, 10 insertions, 74 deletions
diff --git a/chapter06/binutils-pass2.xml b/chapter06/binutils-pass2.xml
index 414d782b3..e55bcf92b 100644
--- a/chapter06/binutils-pass2.xml
+++ b/chapter06/binutils-pass2.xml
@@ -43,6 +43,14 @@
<sect2 role="installation">
<title>Installation of Binutils</title>
+ <!-- Don't remove this until Binutils upstream updates the libtool
+ copy. On some host distros the issue doesn't show up. -->
+ <para>Binutils ships an outdated libtool copy in the tarball. It lacks
+ sysroot support so the produced binaries will be mistakenly linked to
+ libraries from the host distro. Workaround this issue:</para>
+
+<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
+
<para>Create a separate build directory again:</para>
<screen><userinput remap="pre">mkdir -v build
@@ -85,13 +93,9 @@ cd build</userinput></screen>
<screen><userinput remap="make">make</userinput></screen>
- <para>Install the package, and
- workaround an issue causing
- <filename class="libraryfile">libctf.so</filename>
- to link against zlib from the host distribution:</para>
+ <para>Install the package:</para>
-<screen><userinput remap="install">make DESTDIR=$LFS install
-install -vm755 libctf/.libs/libctf.so.0.0.0 $LFS/usr/lib</userinput></screen>
+<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
</sect2>
diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml
index 1b1ee40bc..366e9a8ab 100644
--- a/chapter06/chapter06.xml
+++ b/chapter06/chapter06.xml
@@ -28,7 +28,6 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xz.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zlib.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="binutils-pass2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc-pass2.xml"/>
diff --git a/chapter06/zlib.xml b/chapter06/zlib.xml
deleted file mode 100644
index d3f66c8cc..000000000
--- a/chapter06/zlib.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % general-entities SYSTEM "../general.ent">
- %general-entities;
-]>
-
-<sect1 id="ch-tools-zlib" role="wrap">
- <?dbhtml filename="zlib.html"?>
-
- <sect1info condition="script">
- <productname>zlib</productname>
- <productnumber>&zlib-version;</productnumber>
- <address>&zlib-url;</address>
- </sect1info>
-
- <title>Zlib-&zlib-version;</title>
-
- <indexterm zone="ch-tools-zlib">
- <primary sortas="a-Zlib">Zlib</primary>
- </indexterm>
-
- <sect2 role="package">
- <title/>
-
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../chapter08/zlib.xml"
- xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
-
- <segmentedlist>
- <segtitle>&buildtime;</segtitle>
- <segtitle>&diskspace;</segtitle>
-
- <seglistitem>
- <seg>&zlib-tmp-sbu;</seg>
- <seg>&zlib-tmp-du;</seg>
- </seglistitem>
- </segmentedlist>
-
- </sect2>
-
- <sect2 role="installation">
- <title>Installation of Zlib</title>
-
- <para>Prepare Zlib for compilation:</para>
-
- <screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
-
- <para>Compile the package:</para>
-
-<screen><userinput remap="make">make</userinput></screen>
-
- <para>Install the package:</para>
-
-<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
-
- </sect2>
-
- <sect2 role="content">
- <title/>
- <para>Details on this package are located in
- <xref linkend="contents-zlib" role="."/>
- </para>
-
- </sect2>
-
-</sect1>