source: chapter06/binutils-pass2.xml@ 6099a471

11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 bdubbs/gcc13 multilib renodr/libudev-from-systemd trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 6099a471 was 6099a471, checked in by Xi Ruoyao <xry111@…>, 20 months ago

Remove libtool archive (.la) files in Chapter 5 and 6

They are really harmful. In Binutils pass 2, libstdc++.la caused the
building system to use host /usr/lib/libstdc++.so for gprofng. We now
has disabled gprofng for pass 2, but the similar issue also exists in
GCC pass 2. In a normal LFS build, the building system silently uses
/usr/lib/libstdc++.so (I guess it does not blow up simply because some
blind luck); in a real cross build (x86 -> ARM for example) the build
will fail.

Remove the .la files to fix this issue. Instead of only modifying
clfs-ng, it makes more sense to apply the change for trunk: though
the build does not fail, using host library is still a contamination.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-binutils-pass2" role="wrap">
9 <?dbhtml filename="binutils-pass2.html"?>
10
11 <sect1info condition="script">
12 <productname>binutils-pass2</productname>
13 <productnumber>&binutils-version;</productnumber>
14 <address>&binutils-url;</address>
15 </sect1info>
16
17 <title>Binutils-&binutils-version; - Pass 2</title>
18
19 <indexterm zone="ch-tools-binutils-pass2">
20 <primary sortas="a-Binutils">Binutils</primary>
21 <secondary>tools, pass 2</secondary>
22 </indexterm>
23
24 <sect2 role="package">
25 <title/>
26
27 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
28 href="../chapter08/binutils.xml"
29 xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
30
31 <segmentedlist>
32 <segtitle>&buildtime;</segtitle>
33 <segtitle>&diskspace;</segtitle>
34
35 <seglistitem>
36 <seg>&binutils-tmpp2-sbu;</seg>
37 <seg>&binutils-tmpp2-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of Binutils</title>
45
46 <!-- Don't remove this until Binutils upstream updates the libtool
47 copy. On some host distros the issue doesn't show up. -->
48 <para>Binutils ships an outdated libtool copy in the tarball. It lacks
49 sysroot support so the produced binaries will be mistakenly linked to
50 libraries from the host distro. Workaround this issue:</para>
51
52<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
53
54 <para>Create a separate build directory again:</para>
55
56<screen><userinput remap="pre">mkdir -v build
57cd build</userinput></screen>
58
59 <para>Prepare Binutils for compilation:</para>
60
61<screen><userinput remap="configure">../configure \
62 --prefix=/usr \
63 --build=$(../config.guess) \
64 --host=$LFS_TGT \
65 --disable-nls \
66 --enable-shared \
67 --enable-gprofng=no \
68 --disable-werror \
69 --enable-64-bit-bfd</userinput></screen>
70
71 <variablelist>
72 <title>The meaning of the new configure options:</title>
73
74 <varlistentry>
75 <term><parameter>--enable-shared</parameter></term>
76 <listitem>
77 <para>Builds <filename
78 class="libraryfile">libbfd</filename> as a shared library.</para>
79 </listitem>
80 </varlistentry>
81
82
83 <varlistentry>
84 <term><parameter>--enable-64-bit-bfd</parameter></term>
85 <listitem>
86 <para>Enables 64-bit support (on hosts with narrower word sizes).
87 May not be needed on 64-bit systems, but does no harm.</para>
88 </listitem>
89 </varlistentry>
90
91 </variablelist>
92
93 <para>Compile the package:</para>
94
95<screen><userinput remap="make">make</userinput></screen>
96
97 <para>Install the package:</para>
98
99<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
100
101 <para>Remove the libtool archive files because they are harmful for
102 cross compilation, and remove unnecessary static libraries:</para>
103
104<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la}</userinput></screen>
105
106 </sect2>
107
108 <sect2 role="content">
109 <title/>
110
111 <para>Details on this package are located in
112 <xref linkend="contents-binutils" role="."/></para>
113
114 </sect2>
115
116</sect1>
Note: See TracBrowser for help on using the repository browser.