source: chapter06/binutils-pass2.xml@ ab31b97

12.1 12.1-rc1 multilib trunk xry111/arm64 xry111/clfs-ng xry111/loongarch xry111/loongarch-12.1 xry111/mips64el xry111/update-glibc
Last change on this file since ab31b97 was 9f9a9b4, checked in by Xi Ruoyao <xry111@…>, 10 months ago

binutils-pass2: Reword the paragraph about libtool workaround

Well, I was blaming libtool too much. If the entire Binutils tree uses
libtool this won't happen. The problem is Binutils building system is
using libtool-style idiom on non-libtool components.

And this issue is not related to cross compiling, at all. A native
build can exploit the issue as well (see the updated comment).

Maybe I'll submit a patch to GCC (yes, not a typo, GCC is the upstream
of Binutils building system) to fix the issue when I have the mood...

  • Property mode set to 100644
File size: 3.9 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 resolves this issue.
47 We can test by building Binutils on a complete system with
48 zlib (libz.so) installed, passing enable-shared and
49 without-system-zlib. If the resulted libctf.so still links against
50 libz.so (check with readelf -d) despite we are saying
51 without-system-zlib, then the issue is still unresolved. -->
52 <para>Binutils relies on an internal libtool copy to link against
53 internal static libraries, but the libiberty and zlib copies shipped
54 in the package do not use libtool. This inconsistency may cause
55 produced binaries mistakenly linked against libraries from the host
56 distro. Work around this issue:</para>
57
58<screen><userinput remap="pre">sed '6009s/$add_dir//' -i ltmain.sh</userinput></screen>
59
60 <para>Create a separate build directory again:</para>
61
62<screen><userinput remap="pre">mkdir -v build
63cd build</userinput></screen>
64
65 <para>Prepare Binutils for compilation:</para>
66
67<screen><userinput remap="configure">../configure \
68 --prefix=/usr \
69 --build=$(../config.guess) \
70 --host=$LFS_TGT \
71 --disable-nls \
72 --enable-shared \
73 --enable-gprofng=no \
74 --disable-werror \
75 --enable-64-bit-bfd</userinput></screen>
76
77 <variablelist>
78 <title>The meaning of the new configure options:</title>
79
80 <varlistentry>
81 <term><parameter>--enable-shared</parameter></term>
82 <listitem>
83 <para>Builds <filename
84 class="libraryfile">libbfd</filename> as a shared library.</para>
85 </listitem>
86 </varlistentry>
87
88
89 <varlistentry>
90 <term><parameter>--enable-64-bit-bfd</parameter></term>
91 <listitem>
92 <para>Enables 64-bit support (on hosts with smaller word sizes).
93 This may not be needed on 64-bit systems, but it does no harm.</para>
94 </listitem>
95 </varlistentry>
96
97 </variablelist>
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=$LFS install</userinput></screen>
106
107 <para>Remove the libtool archive files because they are harmful for
108 cross compilation, and remove unnecessary static libraries:</para>
109
110<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</userinput></screen>
111
112 </sect2>
113
114 <sect2 role="content">
115 <title/>
116
117 <para>Details on this package are located in
118 <xref linkend="contents-binutils" role="."/></para>
119
120 </sect2>
121
122</sect1>
Note: See TracBrowser for help on using the repository browser.