source: clfs-embedded/BOOK/cross-tools/x86/uclibc.xml@ ae024d6

Last change on this file since ae024d6 was e57d05e, checked in by Chris Staub <chris@…>, 18 years ago

Text Updates

  • Property mode set to 100644
File size: 4.3 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-uclibc" role="wrap">
9 <?dbhtml filename="uclibc.html"?>
10
11 <title>uClibc-&uclibc-version;</title>
12
13 <indexterm zone="ch-cross-tools-uclibc">
14 <primary sortas="a-uClibc">uClibc</primary>
15 <secondary>cross tools</secondary>
16 </indexterm>
17
18 <sect2 role="package">
19 <title/>
20
21 <para>The uClibc package contains the main C library. This library provides
22 the basic routines for allocating memory, searching directories, opening and
23 closing files, reading and writing files, string handling, pattern matching,
24 arithmetic, and so on.</para>
25
26 </sect2>
27
28 <sect2 role="installation">
29 <title>Installation of uClibc</title>
30
31 <para os="c">By default uClibc symlinks the headers to the source directory.
32 This is not acceptable in our build scenario, so we modify the Makefiles
33 so that the headers will be copied instead:</para>
34
35<screen os="d"><userinput>cp Makefile Makefile.orig
36sed -e 's/$(LN) -fs/cp/g' Makefile.orig > Makefile
37for file in `find libc/sysdeps/linux -name Makefile`; do
38 cp $file $file.orig
39 sed -e 's/$(LN) -fs/cp/g' -e 's@../libc/@$(TOPDIR)libc/@g' $file.orig > $file
40done</userinput></screen>
41
42 <note os="e">
43 <para>Below we are just telling uClibc to use its default configuration.
44 For those for more adventureous, you can use make menuconfig, and
45 do a more custom build for your uClibc installation.</para>
46 </note>
47
48 <para os="f">Create the default configuration:</para>
49
50<screen os="g"><userinput>make defconfig</userinput></screen>
51
52 <para os="h">We will need to edit the configuration file, to make sure everything gets
53 compiled and put into its proper location:</para>
54
55<screen os="i"><userinput>cp .config .config.orig
56sed -e "/^CROSS_COMPILER_PREFIX/s:=.*:=\"${CLFS_TARGET}-\":" \
57 -e "/^KERNEL_SOURCE/s:=.*:=\"${CLFS}/usr\":" \
58 -e "/^SHARED_LIB_LOADER_PREFIX/s:=.*:=\"/lib\":" \
59 -e "/^DEVEL_PREFIX/s:=.*:=\"/usr\":" \
60 -e "/^RUNTIME_PREFIX/s:=.*:=\"/\":" \
61 .config.orig > .config</userinput></screen>
62
63 <para os="j">We will need to make sure that some settings in uClibc are set so we
64 can utilize all the features of BusyBox:</para>
65
66<screen os="k"><userinput>UCLIBC_OPTIONS="DO_C99_MATH UCLIBC_HAS_RPC UCLIBC_HAS_CTYPE_CHECKED UCLIBC_HAS_WCHAR UCLIBC_HAS_HEXADECIMAL_FLOATS
67 UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE UCLIBC_HAS_PRINTF_M_SPEC UCLIBC_HAS_FTW UCLIBC_HAS_IPV6"
68for config in $UCLIBC_OPTIONS; do
69 cp .config .config.orig
70 sed -e "s:# ${config} is not set:${config}=y:" .config.orig > .config
71done
72echo "UCLIBC_HAS_FULL_RPC=y" >> .config</userinput></screen>
73
74 <para os="l">Compile the package:</para>
75
76<screen os="m"><userinput>make TARGET_ARCH=i386</userinput></screen>
77
78 <para os="n">The uClibc build system creates symlinks in its
79 <filename class="directory">include</filename> directory pointing to
80 ${CLFS}/usr/include. We will need to remove these symlinks from the source dir:</para>
81
82<screen os="o"><userinput>rm include/{asm,asm-generic,linux}</userinput></screen>
83
84 <para os="p">Install the package:</para>
85
86<screen os="q"><userinput>make PREFIX=${CLFS} install</userinput></screen>
87
88 </sect2>
89
90 <sect2 id="contents-uclibc" role="content">
91 <title>Contents of uClibc</title>
92
93 <segmentedlist>
94 <segtitle>Installed uClibc</segtitle>
95
96 <seglistitem>
97 <seg>To Be Written</seg>
98 </seglistitem>
99 </segmentedlist>
100<!--
101 <variablelist>
102 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
103 <?dbfo list-presentation="list"?>
104 <?dbhtml list-presentation="table"?>
105
106 <varlistentry id="uclibc">
107 <term><filename
108 class="headerfile">/usr/include/{asm,linux}/*.h</filename></term>
109 <listitem>
110 <para>The Linux API headers</para>
111 <indexterm zone="ch-system-linux-headers linux-headers">
112 <primary
113 sortas="e-/usr/include/{asm,linux}/*.h">/usr/include/{asm,linux}/*.h</primary>
114 </indexterm>
115 </listitem>
116 </varlistentry>
117 </variablelist>
118-->
119
120 </sect2>
121</sect1>
Note: See TracBrowser for help on using the repository browser.