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 /chapter06/binutils-pass2.xml | |
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.
Diffstat (limited to 'chapter06/binutils-pass2.xml')
-rw-r--r-- | chapter06/binutils-pass2.xml | 16 |
1 files changed, 10 insertions, 6 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> |