diff options
author | Xi Ruoyao <xry111@mengyan1223.wang> | 2022-02-10 20:13:21 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@mengyan1223.wang> | 2022-02-10 21:05:33 +0800 |
commit | 426913ea08640343690e423fa521392d44595a9c (patch) | |
tree | 27cbad01299a49bdd13bdbbd785576fead8b4b3e | |
parent | b35ab48b26143c7dffdb101d98bf62cdad7451ee (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.
-rw-r--r-- | chapter01/changelog.xml | 11 | ||||
-rw-r--r-- | chapter06/binutils-pass2.xml | 16 | ||||
-rw-r--r-- | chapter06/chapter06.xml | 1 | ||||
-rw-r--r-- | chapter06/zlib.xml | 67 |
4 files changed, 21 insertions, 74 deletions
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 97fff77a0..151814f06 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -40,6 +40,17 @@ appropriate for the entry or if needed the entire day's listitem. --> <listitem> + <para>2022-02-10</para> + <itemizedlist> + <listitem> + <para>[xry111] - Workaround the issue causing binaries link to + libraries from the host distro for pass 2 binutils. It's now + unnecessary to build zlib in chapter 6.</para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> <para>2022-02-09</para> <itemizedlist> <listitem> 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> |