source: BOOK/cross-tools/x86/glibc-headers.xml @ f729ad2

clfs-1.2clfs-2.1clfs-3.0.0-systemdclfs-3.0.0-sysvinitsystemdsysvinit
Last change on this file since f729ad2 was f729ad2, checked in by Jim Gifford <clfs@…>, 18 years ago

r1117@server (orig r1115): chris | 2006-01-31 11:20:30 -0800
Corrected coreutils instructions for moving programs to /bin, and added more -v switches

  • Property mode set to 100644
File size: 6.0 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4  <!ENTITY % general-entities SYSTEM "../../general.ent">
5  %general-entities;
6]>
7
8<sect1 id="ch-cross-tools-glibc-headers" role="wrap">
9  <?dbhtml filename="glibc-headers.html"?>
10
11  <title>Glibc-&glibc-version; Headers</title>
12
13  <indexterm zone="ch-cross-tools-glibc-headers">
14    <primary sortas="a-Glibc">Glibc</primary>
15    <secondary>cross tools, headers</secondary>
16  </indexterm>
17
18  <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
19  href="../../final-system/common/glibc.xml"
20  xpointer="xpointer(//*[@role='package'])"/>
21
22  <sect2 role="installation">
23    <title>Installation of Glibc Headers</title>
24
25    <para os="s1">The following sed removes a dependency of gcc 3.4.x from
26    the glibc used in cross-lfs. The reason it is changed is
27    because only the headers are being installed now; no compiling takes place.
28    In the next glibc build, the gcc that's built right after this section will be used.</para>
29
30<screen os="s2"><userinput>cp -v configure{,.orig}
31sed -e 's/3.4/3.[0-9]/g' configure.orig > configure</userinput></screen>
32
33    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
34    href="../../final-system/common/glibc.xml"
35    xpointer="xpointer(//*[@os='e'])"/>
36
37    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
38    href="../../final-system/common/glibc.xml"
39    xpointer="xpointer(//*[@os='f'])"/>
40
41    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
42    href="../common/glibc.xml"
43    xpointer="xpointer(//*[@os='dd'])"/>
44
45    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
46    href="../common/glibc.xml"
47    xpointer="xpointer(//*[@os='de'])"/>
48
49    <para os="df">Glibc has an issue cross-compiling the headers, where it can
50    misdetect the capabilities of Binutils and decide they are inadequate.  The
51    following line fixes this:</para>
52
53<screen os="dg"><userinput>echo "libc_cv_initfini_array=yes" &gt;&gt; config.cache
54</userinput></screen>
55
56    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
57    href="../../final-system/common/glibc.xml"
58    xpointer="xpointer(//*[@os='g'])"/>
59
60<screen os="s3"><userinput>CC=gcc ../glibc-&glibc-version;/configure --prefix=/tools \
61    --host=${LFS_TARGET} --build=${LFS_HOST} \
62    --disable-sanity-checks --enable-kernel=2.6.0 \
63    --with-headers=/tools/include --cache-file=config.cache \
64    --with-binutils=/cross-tools/${LFS_TARGET}/bin</userinput></screen>
65
66   <warning os="e1">
67      <para><emphasis>Any</emphasis> error message you see about nptl at this point
68       can safely be ignored.</para>
69   </warning>
70
71    <variablelist os="ca">
72      <title>The meaning of the configure options:</title>
73
74      <varlistentry os="ca1">
75        <term><parameter>CC=gcc</parameter></term>
76        <listitem>
77          <para>Tells Glibc to use the host's GCC compiler.</para>
78        </listitem>
79      </varlistentry>
80
81      <varlistentry os="ca2">
82        <term><parameter>--build=${LFS_HOST}</parameter></term>
83        <listitem>
84          <para>When used with --host, this creates a cross-architecture
85          executable that creates files for ${LFS_TARGET} but runs on ${LFS_HOST).</para>
86        </listitem>
87      </varlistentry>
88
89      <varlistentry os="ca3">
90        <term><parameter>--host=${LFS_TARGET}</parameter></term>
91        <listitem>
92          <para>When used with --build, this creates a cross-architecture
93          executable that creates files for ${LFS_TARGET} but runs on ${LFS_HOST).</para>
94        </listitem>
95      </varlistentry>
96
97      <varlistentry os="ca4">
98        <term><parameter>--disable-sanity-checks</parameter></term>
99        <listitem>
100          <para>This switch disables any checks that are in place.</para>
101        </listitem>
102      </varlistentry>
103
104      <varlistentry os="ca5">
105        <term><parameter>--enable-kernel=2.6.0</parameter></term>
106        <listitem>
107          <para>This tells Glibc to compile the library with support
108          for 2.6.x Linux kernels.</para>
109        </listitem>
110      </varlistentry>
111
112      <varlistentry os="ca6">
113        <term><parameter>--with-headers=/tools/include</parameter></term>
114        <listitem>
115          <para>This tells Glibc to compile itself against the headers
116          recently installed to the <filename class="directory">/tools</filename>
117          directory, so that it knows exactly what features the kernel has
118          and can optimize itself accordingly.</para>
119        </listitem>
120      </varlistentry>
121
122      <varlistentry os="ca7">
123        <term><parameter>--with-binutils=/cross-tools/${LFS_TARGET}/bin</parameter></term>
124        <listitem>
125          <para>This tells Glibc to use the binutils for the specific target architecture.</para>
126        </listitem>
127      </varlistentry>
128
129    </variablelist>
130
131    <para os="cb">Now, install the headers:</para>
132
133<screen os="cd"><userinput>make install-headers</userinput></screen>
134
135    <para os="ce">Some files aren't installed by the above command, so copy the additional header files that are needed:</para>
136
137    <para os="cf">First copy a common file over to <filename
138    class="directory">/tools/include</filename>:</para>
139
140<screen os="cg"><userinput>install -dv /tools/include/bits
141cp bits/stdio_lim.h /tools/include/bits</userinput></screen>
142
143    <para os="ch">Now create a blank stub file:</para>
144
145<screen os="ci"><userinput>touch /tools/include/gnu/stubs.h</userinput></screen>
146
147    <para os="cj">For NPTL use the following command:</para>
148
149<screen os="ck"><userinput>cp -v ../glibc-&glibc-version;/nptl/sysdeps/pthread/pthread.h /tools/include/</userinput></screen>
150
151    <para os="cl">Now copy the architecture specific header over:</para>
152
153<screen os="cm"><userinput>cp -v ../glibc-&glibc-version;/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h /tools/include/bits/</userinput></screen>
154
155  </sect2>
156
157  <sect2 role="content">
158    <title/>
159
160    <para>Details on this package are located in <xref
161    linkend="contents-glibc" role="."/></para>
162
163  </sect2>
164
165</sect1>
Note: See TracBrowser for help on using the repository browser.