source: chapter06/file.xml@ 6099a471

11.2 11.2-rc1 multilib trunk xry111/arm64 xry111/clfs-ng xry111/pip3 xry111/queue-11.3 xry111/rust-wip-20221008
Last change on this file since 6099a471 was 6099a471, checked in by Xi Ruoyao <xry111@…>, 3 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.3 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-file" role="wrap">
9 <?dbhtml filename="file.html"?>
10
11 <sect1info condition="script">
12 <productname>file</productname>
13 <productnumber>&file-version;</productnumber>
14 <address>&file-url;</address>
15 </sect1info>
16
17 <title>File-&file-version;</title>
18
19 <indexterm zone="ch-tools-file">
20 <primary sortas="a-File">File</primary>
21 <secondary>tools</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/file.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>&file-tmp-sbu;</seg>
37 <seg>&file-tmp-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of File</title>
45
46 <para>
47 The <command>file</command> command on the build host needs
48 to be same version as the one we are building in order to
49 create the signature file. Run the following commands to build it:
50 </para>
51
52<screen><userinput remap="pre">mkdir build
53pushd build
54 ../configure --disable-bzlib \
55 --disable-libseccomp \
56 --disable-xzlib \
57 --disable-zlib
58 make
59popd</userinput></screen>
60
61 <variablelist>
62 <title>The meaning of the new configure option:</title>
63
64 <varlistentry>
65 <term><parameter>--disable-*</parameter></term>
66 <listitem>
67 <para>The configuration script attempts to use some packages from
68 the host distribution if the corresponding library files exist.
69 It may cause compilation failure if a library file exists, but
70 the corresponding header files do not. These options prevent
71 using these unneeded capabilities from the host.</para>
72 </listitem>
73 </varlistentry>
74 </variablelist>
75
76 <para>Prepare File for compilation:</para>
77
78<screen><userinput remap="configure">./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)</userinput></screen>
79
80<!-- devs: if using - -build here, the build system wants to compile
81 the signature file with "file" on the build system, but stops if it is not
82 the same version. One possibility would be to build "file" on the build
83 system first, but it is simpler to have the system think it is not
84 cross-compiling, and use the just built "file". -->
85 <para>Compile the package:</para>
86
87<screen><userinput remap="make">make FILE_COMPILE=$(pwd)/build/src/file</userinput></screen>
88
89 <para>Install the package:</para>
90
91<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
92
93 <para>Remove the libtool archive file because it is harmful for cross
94 compilation:</para>
95
96<screen><userinput remap="install">rm -v $LFS/usr/lib/libmagic.la</userinput></screen>
97
98 </sect2>
99
100 <sect2 role="content">
101 <title/>
102 <para>Details on this package are located in <xref linkend="contents-file" role="."/></para>
103
104 </sect2>
105
106</sect1>
Note: See TracBrowser for help on using the repository browser.