Subversion Repositories svn LFS-FR

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
655 texou 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-system-glibc" role="wrap" condition="glibc">
9
  <?dbhtml filename="glibc.html"?>
10
 
11
  <title>Glibc-&glibc-version;</title>
12
 
13
  <indexterm zone="ch-system-glibc">
14
    <primary sortas="a-Glibc">Glibc</primary>
15
  </indexterm>
16
 
17
  <sect2 role="package">
18
    <title/>
19
 
20
    <para>Le paquet Glibc contient la bibliothèque C principale. Cette bibliothè
21
                fournit toutes les routines basiques pour allouer de la mémoire, rechercher
22
                répertoires, ouvrir et fermer des fichiers, les lire et les écrire, gérer
23
                les chaînes, faire correspondre des modèles, faire de l'arithmétique et
24
                ainsi de suite.</para>
25
 
26
    <para>Notes utilisateur&nbsp;: <ulink url="&hlfs-wiki;/glibc"/></para>
27
 
28
  </sect2>
29
 
30
  <sect2 role="installation">
31
    <title>Installation de Glibc</title>
32
 
33
    <para>Ce paquet est connu pour avoir des problèmes quand ses commutateurs
34
    d'optimisation par défaut (y compris les options
35
                <parameter>-march</parameter> et <parameter>-mtune</parameter>) sont
36
                modifiés.. Si vous avez défini une variable d'environnement qui écrase
37
    les optimisations par défaut, telles que <envar>CFLAGS</envar> et
38
                <envar>CXXFLAGS</envar>, désinitialisez-les lorsque vous compilez Glibc.</para>
39
 
40
    <para vendor="2.4">Déballez l'ajout Linuxthreads&nbsp;:</para>
41
 
42
<screen vendor="2.4"><userinput>tar xvf ../glibc-linuxthreads-&glibc-linuxthreads-version;.tar.bz2</userinput></screen>
43
 
44
    <para vendor="2.4">Incluez le fichier d'en-tête pour
45
                <function>getcwd</function>&nbsp;:</para>
46
 
47
<screen vendor="2.4"><userinput>sed 's@#include &lt;unistd.h&gt;@&amp;\n#include &lt;sys/param.h&gt;@' \
48
    -i.orig sysdeps/unix/sysv/linux/getcwd.c</userinput></screen>
49
 
50
    <para vendor="2.4">Certains des tests ont aussi besoin d'un fichier
51
                d'en-tête supplémentaire inclu pour qu'ils compilent linuxthreads&nbsp;:</para>
52
 
53
<screen vendor="2.4"><userinput>sed 's/#include &lt;stdio.h&gt;/&amp;\n#include &lt;stdlib.h&gt;/' \
54
    -i.orig libio/{bug-memstream1,bug-wmemstream1,tst-memstream{1,2}}.c</userinput></screen>
55
 
56
    <para>Si vous voulez installer Libdn, déballez-le&nbsp;:</para>
57
 
58
<screen><userinput>tar vxf ../glibc-libidn-&glibc-libidn-version;.tar.gz
59
mv -v glibc-libidn-&glibc-libidn-version; libidn</userinput></screen>
60
 
61
    <para>Le correctif suivant est issu du CVS de Glibc&nbsp;:
62
    <ulink url="http://sourceware.org/ml/glibc-cvs/2005-q3/msg00354.html"/>.
63
    Il utilise <foreignphrase>High Precision Timing</foreignphrase> (temps
64
                haute précision) pour initialiser la valeur de garde du protecteur Stack si
65
                si le périphérique pseudo-aléatoire échoue. Ceci ne fonctionne correctement
66
                qu'avec des processeurs très récents (i686)&nbsp;:</para>
67
 
68
<screen><userinput>patch -Np1 -i ../&glibc-ssp_hp-timing-patch;</userinput></screen>
69
 
70
    <para>Le correctif suivant est issu du CVS de Glibc&nbsp;:
71
    <ulink url="http://sourceware.org/ml/glibc-cvs/2006-q4/msg00118.html"/>, et
72
    ajoute <function>__attribute_warn_unused_result__</function> aux
73
                fonctions supplémentaires, pour plus d'avertissements _FORTIFY_SOURCE du
74
                compilateur&nbsp;:</para>
75
 
76
<screen><userinput>patch -Np1 -i ../&glibc-wur-patch;</userinput></screen>
77
 
78
    <para>Le correstif suivant est issu du cvs de Glibc et corrige la fonction
79
    <function>strfry</function> pour gérer une chaîne vide&nbsp;:</para>
80
 
81
<screen><userinput>patch -Np1 -i ../&glibc-strfry-patch;</userinput></screen>
82
 
83
    <para>Le correstif suivant est issu du cvs de Glibc et ajoute sha256 et
84
                sha512 à la bibliothèque de cryptage, afin qu'elle puisse être utilisée
85
                par le paquet des mots de passe Shadow&nbsp;:</para>
86
 
87
<screen><userinput>patch -Np1 -i ../&glibc-sha512-patch;</userinput></screen>
88
 
89
    <para>Sous la locale vi_VN.TCVN, <command>bash</command> entre dans une
90
                boucle infinie au lancement. On ne sait pas s'il s'agit d'un bogue
91
                <command>bash</command> ou d'un problème de Glibc. Désactivez l'installation
92
                de cette locale afin d'éviter le problème&nbsp;:</para>
93
 
94
<screen><userinput>sed -i.orig '/vi_VN.TCVN/d' localedata/SUPPORTED</userinput></screen>
95
 
96
    <para>Lors de l'exécution de <command>make install</command>, un script
97
                appelé <filename>test-installation.pl</filename> opère un test de propreté
98
                sur notre Glibc récemment installée. Cependant, notre ensemble d'outils
99
                pointant encore vers le répertoire
100
                <filename class="directory">/tools</filename>, le test de propreté pourrait
101
                se fier au mauvais Glibc. Nous pouvons forcer le script à tester la Glibc
102
                que nous venons d'installer en lançant ceci&nbsp;:</para>
103
 
104
<screen><userinput>sed \
105
's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \
106
        -i.orig scripts/test-installation.pl</userinput></screen>
107
 
108
    <para>Le script shell <command>ldd</command> contient la syntaxe spécifique
109
                Bash. Changez son programme interpréteur par défaut en
110
                <command>/bin/bash</command> si <command>/bin/sh</command> n'est pas
111
                installé comme décrit dans le chapitre Shells du livre BLFS&nbsp;:</para>
112
 
113
<screen><userinput>sed 's|@BASH@|/bin/bash|' -i.orig elf/ldd.bash.in</userinput></screen>
114
 
115
    <para><command>pt_chown</command> est utilisée pour contrôler les droits de
116
    <filename class="devicefile">/dev/ttyp?</filename>. Ce comportement a été
117
    remplacé par les pseudo-terminaux Unix98 dans
118
                <filename class="directory">/dev/pts/</filename>. Ceci dépend du pilote
119
    CONFIG_UNIX98_PTYS du noyau, que LFS et HLFS recommandent fortement à tous
120
    d'utiliser. <command>pt_chown</command> est installée avec le SUID
121
    <emphasis>root</emphasis> et comme nous n'en avons pas besoin, il n'y a pas
122
    de raison de l'installer. Vous pouvez aussi installer
123
                <command>pt_chown</command> puis supprimer le bit SUID avec un
124
    <command>chmod -s /usr/lib/glibc/pt_chown</command>. Pour empêcher
125
    <command>pt_chown</command> de s'installer, lancez la commande
126
                suivante&nbsp;:</para>
127
 
128
<screen><userinput>sed '/^install.*pt_chown/d' -i.orig login/Makefile</userinput></screen>
129
 
130
    <para>Appliquez les correctifs trampoline&nbsp;:</para>
131
 
132
<screen><userinput>patch -Np1 -i ../&glibc-iconvconfig_trampoline-patch;
133
patch -Np1 -i ../&glibc-localedef_trampoline-patch;</userinput></screen>
134
 
135
    <para role="pax">Appliquez le correctif PT_PAX_FLAGS&nbsp;:</para>
136
 
137
<screen role="pax"><userinput>patch -Np1 -i ../&glibc-pt_pax-patch;</userinput></screen>
138
 
139
    <para>Le correctif suivant ajoute les fonctions de bibliothèque
140
                arc4random() et mkstemps() à libc. arc4random() est 1tilisée par de
141
                nombreux paquets comme une façon sûre et sans échec d'obtenir une chaîne
142
    aléatoire. arc4random() est plus fiable que l'accès direct à
143
                <filename class="devicefile">/dev/urandom</filename> car même si
144
    if <filename class="devicefile">/dev/urandom</filename> échoue pour s'ouvrir
145
    arc4random() utilisera gettimeofday() et getpid() pour remplacer les 0 dans
146
    un vaste intervalle initialisé. Donc même si deux applications utilisent
147
                c4random() en même temps, et que le périphérique
148
                <filename class="devicefile">/dev/urandom</filename> n'est pas accessible,
149
    (comme à l'intérieur de chroot), arc4random() nrooa résultats totalement
150
                différents à chaque application,, et et comme il est chiffré par le
151
                chiffre arcfour, la source de l'entropie ne peut pas être techniquement
152
                inversée. Cela signifie qu'il n'y a aucun moyen de revenir en arrière
153
                et d'obtenir la valeu de urandom ou de getpid() à partir de la sortie
154
                d'arc4random(), ce qui rend plus difficile une attaque. Merci de noter
155
    que bien que cette arc4random() est basée sur une implémentation tant  
156
    both OpenBSD que NetBSD, elle n'est pas identique. L'implémentation
157
                d'OpenBSD dépend uniquement d'une source d'entropy sysctl, mais sur, Linux
158
                sysctl est facultatif et peut ne pas en dépendre. La fonction d'appel
159
                arc4random() dans cette implémentation a été énormément modifiée
160
                pour utiliser plusieurs sources entropy. Il se pourrait du coup que des
161
    demandes faites par d'autres implémentations arc4random() ne soient pas
162
    valides avec cette implémentation. En particulier, cette implémentation ne
163
    peut pas garantir la qualité de l'entropy source, et devrait donc être  
164
    utilisée avec précaution pour la cryptographie. Pour tout autre objectif
165
    cette implémentation devrait convenir très bien. mkstemps() est comme  
166
    mkstemp() sauf qu'elle accepte un argument suffixe. Plusieurs paquets    
167
    utilisent mkstemps(), comme  GCC et Binutils. mkstemps() est inclu avec
168
                ce ce correctif afin qu'elle utilise arc4random() au lieu de la gettimeofday()
169
                par défaut. Ce correctif utilise aussi arc4random() dans tempname() afin
170
                qu'elle puisse être utilisée par la famille de fonctions mktemp() et dans
171
                strfry(), res_init(), res_mkquery() et bindrsvprt() pour améliorer la
172
                résolution et le caractère aléatoire des numéros de ports. En outre, ce
173
    correctif ajoute le paramètre <parameter>--with-prng-device</parameter> de
174
    configure pour nous permettre de spécifier quel périphérique
175
                pseudo-aléatoire à utiliser pour arc4random() et SSP. Ce correctif a été
176
                rejeté par les mainteneurs d'origine car l'équipe Glibc croit que sa
177
    propre bibliothèque convient mieux. Néanmoins, si arc4random() était
178
                utilisée dans sa propre bibliothèque, les fonctions mktemp() et de
179
                résolution dans Glibc ne l'utiliseraient pas.. Appliquez ce correctif avec
180
                la commande suivante&nbsp;:</para>
181
 
182
<screen><userinput>patch -Np1 -i ../&glibc-arc4_prng-patch;</userinput></screen>
183
 
184
<!--
185
    <para role="blowfish">The following patch adds the blowfish algorithm
186
    to <filename class="libraryfile">libcrypt</filename>. This provides
187
    stronger password encryption:</para>
188
 
189
<screen role="blowfish"><userinput>patch -Np1 -i ../&glibc-blowfish-patch;</userinput></screen>
190
-->
191
 
192
    <para role="misc">Ce correctif ajoute les fonctions
193
                <function>strlcpy</function> et <function>strlcat</function> et des pages
194
                de manuel à Glibc. Un papier écrit sur ces fonctions est disponible ici&nbsp;:
195
    <ulink url="http://www.courtesan.com/todd/papers/strlcpy.html"/>. Le
196
                projet Glibc a refusé d'ajouter ces fonctions et ces 'échanges de mails  
197
                commence ici&nbsp;:
198
                <ulink url="http://sources.redhat.com/ml/libc-alpha/2000-08/msg00052.html"/>.
199
    Linus Torvalds a ajouté une fonction similaire au noyau Linux, et cet
200
                échange de mails est ici&nbsp;:
201
                <ulink url="http://lwn.net/Articles/33814/"/>. Les fonctions
202
    <function>strlcpy</function> et <function>strlcat</function> sont des
203
    remplacements de <function>strncpy</function> et
204
    <function>strncat</function>. La controverse sur ces fonctions réside dans
205
    le fait que <function>strlcpy</function> et <function>strlcat</function>
206
                copient les données sources au tampon de destination jusqu'à ce que la
207
                destination soit pleine, et rejette le reste des données s'il y en a. Cela
208
                signifie que ces fonctions ne seront jamais en débordement de mémoire.
209
    Le refus de l'équipe Glibc d'ajouter ces fonctions se fonde sur le fait
210
                qu'elles dissimulent des erreurs de programmation et elles ont un record
211
                de performance plus élevé que <function>strncpy</function> et
212
    <function>strncat</function>. Ces fonctions ne devraient pas être
213
    nécessaires dans un monde parfait, mais elles ont été inventées pour
214
                composer avec le monde réel. Beaucoup de paquets utiliseront ces
215
    fonctions s'ils les trouvent, à l'instar de Perl et de beaucoup de
216
    paquets BLFS. Ces fonctions réduisent vraiment les débordements de mémoire
217
    et sont donc recommandées. Après l'installation de ce correctif, aucun
218
                effort supplémentaire n'est requis pour l'utiliser. Les paquets utiliseront
219
    autotools pour détecter si elles sont disponibles ou pas&nbsp;:</para>
220
 
221
<screen role="misc"><userinput>patch -Np1 -i ../&glibc-strlcpy_strlcat-patch;</userinput></screen>
222
 
223
    <para role="misc">Les fonctions asprintf(3) et vasprintf(3) sont des
224
                extensions GNU non définie par les standards C ou Posix. Dans Glibc,
225
                ces fonctions laissent (char **strp) non définies (il peut être ou non
226
                défini) après une une erreur. Ce correctif réinitialise (char **strp) à
227
                NULL après une erreur par propreté. Ce correctif, et le comportement
228
                qu'il met en place, a été revu et discuté sur la liste de diffusion Glibc,
229
    et paraît avoir été accepté, et il semble qu'il ait ensuite été oublié. Ce
230
    correctif est facultatif et rien ne dépendra de lui, mais il corrige un
231
    bogue auquel est sujet le comportement des fonctions de cette bibliothèque.
232
    Appliquez ce correctif avec la commande suivante&nbsp;:</para>
233
 
234
<screen role="misc"><userinput>patch -Np1 -i ../&glibc-asprintf_reset2null-patch;</userinput></screen>
235
 
236
    <para>Ce correctif ajoute la fonction issetugid() qui est une interface
237
                avec la fonction __libc_enable_secure() propre à l'éditeur de liens
238
                dynamiques. Cette fonction signale si le programme est lancé avec des
239
    identifieurs correspondant au réel et effectifs ou non, pour déterminer si
240
                le programme est lancé avec les privilèges set-uid ou set-gid. Beaucoup
241
    de paquets chercheront issetugid() et l'utilisent s'ils la trouvent.
242
    Elle est plus sûre que d'autoriser chaque programme à déterminer lui-même
243
    les privilèges car elle est testée à un niveau plus faible qui n'est pas
244
    manipulable par l'utilisateur. Appliquez ce correctif avec la commande
245
    suivante&nbsp;:</para>
246
 
247
<screen><userinput>patch -Np1 -i ../&glibc-issetugid-patch;</userinput></screen>
248
 
249
    <para>Ajoutez <envar>MUDFLAP_OPTIONS</envar> à la liste des variables
250
                d'environnement qui sont supprimées par libc pour les programmes suid. Cela
251
                évitera aux utilisateurs locaux, y compris root, de désactiver le contrôle
252
                des rebonds sur les programmes suid liés à
253
    <filename class="libraryfile">libmudflap.so</filename>&nbsp;:</para>
254
 
255
<screen><userinput>sed 's/#define UNSECURE_ENVVARS.*/&amp;\
256
  "MUDFLAP_OPTIONS\\0" \\/' -i.orig sysdeps/generic/unsecvars.h</userinput></screen>
257
 
258
    <para role="ssp">Le script configure aura plusieurs tests échoués car
259
                <option>-fstack-protector[-all]</option> et <option>-nostdlib</option> sont
260
    utilisés ensemble et le programme conftest n'arrive pas à se lier à
261
                <filename class="libraryfile">libc.so</filename>, ce qui fait que
262
                les symboles SSP sont absents et le programme de test conftest échoue. Cela
263
                ne sera pas un problème après que configure ait été lancé. Corrigez
264
                configure pour que ses tests passent correctement&nbsp;:</para>
265
 
266
<screen role="ssp"><userinput>sed 's/-nostdlib/&amp; -fno-stack-protector/g' -i.orig configure</userinput></screen>
267
 
268
    <para role="ssp">Le programme <command>nscd</command> sera compilé avec
269
                <option>-fstack-protector</option> par Glibc, mais cela va écraser  
270
    <option>-fstack-protector-all</option> dans nos specs GCC.
271
                <command>nscd</command> peut se compiler avec
272
                <option>-fstack-protector-all</option>, donc corrigez cela&nbsp;:</para>
273
 
274
<screen role="ssp"><userinput>sed 's/fstack-protector/&amp;-all/' -i.orig nscd/Makefile</userinput></screen>
275
 
276
    <para role="aslr">Le programme <command>ldconfig</command> est lié
277
                de façon statique. La commande suivante ajoute des options au compilateur
278
                pour qu'il ne soit pas compilé inutilement en tant que PIC&nbsp;:</para>
279
 
280
<screen role="aslr"><userinput>sed 's/CFLAGS-ldconfig.c =/&amp; -fno-PIC -fno-PIE/' \
281
    -i.orig elf/Makefile</userinput></screen>
282
 
283
    <para>La documentation de Glibc recommande de construire Glibc en dehors du
284
                répertoire des sources dans un répertoire de construction dédié&nbsp;:</para>
285
 
286
<screen><userinput>mkdir -v ../glibc-build
287
cd ../glibc-build</userinput></screen>
288
 
289
    <para>Préparez la compilation de Glibc (vous pourriez vouloir ajouter
290
    <parameter>--enable-all-warnings</parameter>)&nbsp;:</para>
291
 
292
<screen vendor="2.4"><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
293
    --libexecdir=/usr/lib/glibc --enable-kernel=2.4.0 \
294
    --enable-stackguard-randomization --enable-bind-now \
295
    --disable-profile --enable-add-ons=linuxthreads,libidn \
296
    --disable-sanity-checks --with-prng-device=/dev/erandom</userinput></screen>
297
 
298
<screen vendor="2.6"><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
299
    --libexecdir=/usr/lib/glibc --enable-kernel=2.6.0 \
300
    --enable-stackguard-randomization --enable-bind-now \
301
    --disable-profile --enable-add-ons --with-prng-device=/dev/erandom</userinput></screen>
302
 
303
    <variablelist>
304
      <title>Voici la signification des options de configure&nbsp;:</title>
305
 
306
      <varlistentry>
307
        <term><parameter>--enable-stackguard-randomization</parameter></term>
308
        <listitem>
309
          <para>Ceci dit à Glibc d'initialiser le dénonciateur __stack_chk_guard
310
                                        avec un nombre aléatoire au démarrage du programme, au lieu d'un
311
                                        nombre statique.</para>
312
        </listitem>
313
      </varlistentry>
314
 
315
      <varlistentry>
316
        <term><parameter>--with-prng-device=/dev/erandom</parameter></term>
317
        <listitem>
318
          <para>Cette option dit à arc4random et SSP quel périphérique
319
                                        pseudo'.aléatoire utiliser.
320
                                        <filename class="devicefile">/dev/erandom</filename> est idéal
321
          mais cela dépend du correctif Frandom du noyau.. Vous pouvez aussi
322
                                        utiliser <filename class="devicefile">/dev/urandom</filename> mais
323
                                        c'est déconseillé à meins que vous n'exécutiez un démon
324
                                        générateur de nombre aléatoire, au quel cas l'entropie réelle est
325
          toujours disponible pour des applications cryptographiques.</para>
326
        </listitem>
327
      </varlistentry>
328
 
329
    </variablelist>
330
 
331
    <para>Les bibliothèques de Glibc ne peuvent être compilées avec
332
    <parameter>-fstack-protector[-all]</parameter>,
333
    <parameter>-D_FORTIFY_SOURCE</parameter> ou
334
    <parameter>-Wl,-z,now</parameter>. L'option de configure
335
    <parameter>--enable-bind-now</parameter> ajoutera
336
    <parameter>-Wl,-z,now</parameter> là où il peut être utilisé. On peut
337
                contrôler les options du compilateur utilisées lors de la compilation
338
                avec le fichier <filename>configparms</filename>. D'abord, nous allons
339
                compiler les bibliothèques.. La commande suivante va initialiser le fichier
340
    <filename>configparms</filename> pour ne compiler que les bibliothèques,
341
                et pour désactiver les options qu'on ne peut pas utiliser&nbsp;:</para>
342
 
343
<screen><userinput>cat &gt; configparms &lt;&lt; "EOF"
344
build-programs=no
345
CC = gcc -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie
346
CXX = g++ -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie
347
EOF</userinput></screen>
348
 
349
    <para>Compilez les bibliothèques&nbsp;:</para>
350
 
351
<screen><userinput>make</userinput></screen>
352
 
353
    <para role="aslr">Glibc se lie aux fichiers de démarrage explicitement. Ce
354
                qui suit va modifier la commande de lien utilisée, afin que les programmes
355
    soient liés aux fichiers de démarrage partageables, et qu'ils utilisent
356
    explicitement <parameter>-fPIE</parameter>. <command>sln</command> est un
357
    autre programme lié statiquement, donc des options sont ajoutées afin  
358
    qu'il ne soit pas compilé en tant que PIC&nbsp;:</para>
359
 
360
<!--
361
<screen role="aslr"><userinput>cat &gt; configparms &lt;&lt; "EOF"
362
-->
363
<screen><userinput>cat &gt; configparms &lt;&lt; "EOF"
364
CC = gcc -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2
365
CXX = g++ -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2
366
CFLAGS-sln.c += -fno-PIC -fno-PIE
367
+link = $(CC) -nostdlib -nostartfiles -fPIE -pie -o $@ \
368
 $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
369
 -Wl,-z,combreloc -Wl,-z,relro -Wl,-z,now $(hashstyle-LDFLAGS) \
370
 $(addprefix $(csu-objpfx),S$(start-installed-name)) \
371
 $(+preinit) `$(CC) --print-file-name=crtbeginS.o` \
372
 $(filter-out $(addprefix $(csu-objpfx),start.o \
373
  $(start-installed-name))\
374
 $(+preinit) $(link-extra-libs) \
375
 $(common-objpfx)libc% $(+postinit),$^) \
376
 $(link-extra-libs) $(link-libc) `$(CC) --print-file-name=crtendS.o` $(+postinit)
377
EOF</userinput></screen>
378
 
379
    <para>Les autres options d'endurcissement du compilateur sont fournies par
380
                défaut, vous n'avez donc pas besoin de les ajouter au
381
    <filename>configparms</filename>.</para>
382
 
383
    <para>Maintenant, lancez à nouveau <command>make</command> pour compiler
384
                les programmes de Glibc&nbsp;:</para>
385
 
386
<screen><userinput>make</userinput></screen>
387
 
388
    <para>Pour tester les résultats, créez d'abord un douveau fichier
389
                <filename>configparms</filename> pour désactiver la plupart des options
390
                d'endurcissement&nbsp;:</para>
391
 
392
<screen><userinput>cat &gt; configparms &lt;&lt; "EOF"
393
CC = gcc -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie
394
CXX = g++ -fPIC -fno-stack-protector -U_FORTIFY_SOURCE -nonow -nopie
395
EOF</userinput></screen>
396
 
397
    <para>Puis lancez la suite de tests&nbsp;:</para>
398
 
399
<screen><userinput>make -k check 2&gt;&amp;1 | tee glibc-check-log
400
grep -n Error glibc-check-log</userinput></screen>
401
 
402
    <para>La suite de tests Glibc est dépendante des caractéristiques du noyau
403
                du système hôte. En conditions idéales, tous les tests, sauf
404
                <quote>posix/annexc.out (ignoré)</quote>, devraient réussir. Le test
405
                <quote>elf/check-localplt</quote> échoue souvent car il y a des symboles
406
    ajoutés dans <filename class="libraryfile">libc.so</filename> qui n'étaient
407
    pas attendus. Ceci est dû aux options de GCC que nous avont ujilisées,
408
    et aux correctifs de Glibc.</para>
409
 
410
    <para>Vous pouvez aussi lancer <command>make check-abi</command> si vous
411
                voulez. Ceci teste les tables de symboles dynamiques ELF par rapport aux
412
                valeurs attendues. Voir&nbsp;:
413
    <ulink url="http://sourceware.org/ml/libc-hacker/2002-12/msg00048.html"/>.
414
    Cette suite de tests produit une longue liste d'erreurs, qui surviennent
415
                pême sur des systèmes parfaits et idéaux.</para>
416
 
417
    <para>Bien que ce ne soit qu'un simple message, l'étape d'installation de
418
                Glibc se plaindra de l'absence d <filename>/etc/ld.so.conf</filename>.
419
    Supprimez ce message d'avertissement avec&nbsp;:</para>
420
 
421
<screen><userinput>touch /etc/ld.so.conf</userinput></screen>
422
 
423
    <para>Installez le paquet&nbsp;:</para>
424
 
425
<screen><userinput>make install</userinput></screen>
426
 
427
    <para>Installez les sages de ma>uel de arc4random() et mkstemps()&nbsp;:</para>
428
 
429
<screen><userinput>install -v -m0644 ../glibc-&glibc-version;/manual/{arc4random,mkstemps}.3 \
430
    /usr/share/man/man3/</userinput></screen>
431
 
432
    <para>Installez la page de manuel de issetugid()&nbsp;:</para>
433
 
434
<screen><userinput>install -v -m0644 ../glibc-&glibc-version;/manual/issetugid.3 \
435
    /usr/share/man/man3/</userinput></screen>
436
 
437
    <para>Déplacez les bibliothèques statiques&nbsp;:</para>
438
 
439
<screen><userinput>install -vd /usr/lib/static/
440
mv -v /usr/lib/{libbsd-compat,libg,libieee,libmcheck}.a /usr/lib/static/
441
mv -v /usr/lib/{libBrokenLocale,libanl,libcrypt}.a /usr/lib/static/
442
mv -v /usr/lib/{libm,libnsl,libpthread,libresolv}.a /usr/lib/static/
443
mv -v /usr/lib/{librpcsvc,librt,libutil}.a /usr/lib/static/</userinput></screen>
444
 
445
    <para>La bibliothèque <filename class="libraryfile">libc_nonshared.a</filename>
446
    n'est nécessaire que pour compiler tout le nécessaire. La bibliothèque      The
447
    <filename class="libraryfile">libpthread_nonshared.a</filename> est
448
                nécessaire à chaque fois que quelque chose se lie à
449
    <filename class="libraryfile">libpthread.so</filename>.
450
    <filename class="libraryfile">libc.a</filename> est nécessaire pour la suite
451
    de tests de GCC, <filename class="libraryfile">libdl.a</filename> est
452
                nécessaire pour la suite de tests de Binutils et elles peuvent être
453
                déplacées après avoir été installées.</para>
454
 
455
    <para>Pour installer toutes les locales, utilisez&nbsp;:</para>
456
 
457
<screen><userinput>make localedata/install-locales</userinput></screen>
458
 
459
    <para>Pour n'installer que ce dont les tests GCC ont besoin, utilisez les
460
                commandes suivantes au lieu du
461
                <command>make localedata/install-locales</command> précédent&nbsp;:</para>
462
 
463
<screen role="nodump"><userinput>install -d /usr/lib/locale
464
localedef -i de_DE -f ISO-8859-1 de_DE
465
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
466
localedef -i en_HK -f ISO-8859-1 en_HK
467
localedef -i en_PH -f ISO-8859-1 en_PH
468
localedef -i en_US -f ISO-8859-1 en_US
469
localedef -i es_MX -f ISO-8859-1 es_MX
470
localedef -i fa_IR -f UTF-8 fa_IR
471
localedef -i fr_FR -f ISO-8859-1 fr_FR
472
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
473
localedef -i it_IT -f ISO-8859-1 it_IT
474
localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
475
 
476
  </sect2>
477
 
478
  <sect2 id="conf-glibc" role="configuration">
479
    <title>Configurer Glibc</title>
480
 
481
    <indexterm zone="conf-glibc">
482
      <primary sortas="e-/etc/nsswitch.conf">/etc/nsswitch.conf</primary>
483
    </indexterm>
484
 
485
    <indexterm zone="conf-glibc">
486
      <primary sortas="e-/etc/localtime">/etc/localtime</primary>
487
    </indexterm>
488
 
489
    <para>Le fichier <filename>/etc/nsswitch.conf</filename> t être créé
490
                parce que, bien que Glibc en fournisse un par défaut lorsque ce fichier est
491
                manquant ou corrompu, les valeurs par défaut de Glibc ne fonctionnent pas bi
492
                dans un environnement en réseau. De plus, le fuseau horaire a besoin d'être
493
                configuré.</para>
494
 
495
    <para>Créez un nouveau fichier <filename>/etc/nsswitch.conf</filename> en
496
                lançant ce qui suit&nbsp;::</para>
497
 
498
<screen><userinput>cat &gt; /etc/nsswitch.conf &lt;&lt; "EOF"
499
<literal># Début de /etc/nsswitch.conf
500
 
501
passwd: files
502
group: files
503
shadow: files
504
 
505
hosts: files dns
506
networks: files
507
 
508
protocols: files
509
services: files
510
ethers: files
511
rpc: files
512
 
513
# Fin de /etc/nsswitch.conf</literal>
514
EOF</userinput></screen>
515
 
516
    <para>Pour déterminer dans quel fuseau horaire vous vous situez, lancez le
517
                script suivant&nbsp;:</para>
518
 
519
<screen role="nodump"><userinput>tzselect</userinput></screen>
520
 
521
    <para>Après avoir répondu à quelques questions sur votre emplacement, le
522
                script affichera le nom du fuseau horaire (quelque chose comme
523
                <emphasis>EST5EDT</emphasis> ou <emphasis>Canada/Est</emphasis>).
524
                Puis créez le fichier <filename>/etc/localtime</filename> en
525
                lançant&nbsp;:</para>
526
 
527
<screen><userinput>cp -v --remove-destination /usr/share/zoneinfo/<replaceable>[xxx]</replaceable> \
528
    /etc/localtime</userinput></screen>
529
 
530
    <para>Remplacez <replaceable>[xxx]</replaceable> par le nom du fuseau
531
    q'a fourni <command>tzselect</command> (par exemple, Canada/Est).</para>
532
 
533
    <variablelist>
534
      <title>Voici la signification de l'option de cp&nbsp;:</title>
535
 
536
      <varlistentry>
537
        <term><parameter>--remove-destination</parameter></term>
538
        <listitem>
539
          <para>Ceci est nécessaire pour forcer la suppression du lien
540
                                        symbolique déjà existant. La raison pour laquelle nous copions plutôt
541
                                        que de simplement créer un lien symbolique est de se couvrir de la
542
                                        situation où
543
                                        <filename class="directory">/usr</filename> serait une partition
544
                                        séparée. Ceci pourrait arriver, par exemple, en démarrant en mode
545
                                        utilisateur unique.</para>
546
        </listitem>
547
      </varlistentry>
548
 
549
    </variablelist>
550
 
551
  </sect2>
552
 
553
  <sect2 id="conf-ld" role="configuration">
554
    <title>Configurer le chargeur dynamique</title>
555
 
556
    <indexterm zone="conf-ld">
557
      <primary sortas="e-/etc/ld.so.conf">/etc/ld.so.conf</primary>
558
    </indexterm>
559
 
560
    <para>Par défaut, le chargeur dynamique
561
                (<filename class="libraryfile">/lib/ld-linux.so.2</filename>) cherche dans
562
    <filename class="directory">/lib</filename> et
563
                <filename class="directory">/usr/lib</filename> les bibliothèques
564
                partagées nécessaires aux programmes lors de leur exécution. Néanmoins, s'il
565
                existe des bibliothèques dans d'autres répertoires que
566
          <filename class="directory">/lib</filename> et
567
    <filename class="directory">/usr/lib</filename>, leur emplacement doit être
568
                ajouté dans le fichie
569
    <filename>/etc/ld.so.conf</filename> pour que le chargeur dynamique les
570
                trouve.</para>
571
 
572
    <para>Créez un nouveau fichier <filename>/etc/ld.so.conf</filename> en
573
                lançant ce qui suit&nbsp;:</para>
574
 
575
<screen><userinput>echo "/usr/local/lib" &gt; ld.so.conf.new
576
install -m644 ld.so.conf.new /etc/ld.so.conf</userinput></screen>
577
 
578
  </sect2>
579
 
580
  <sect2 id="contents-glibc" role="content">
581
    <title>Conten1 de Glibc</title>
582
 
583
    <segmentedlist>
584
      <segtitle>Programmes installés</segtitle>
585
      <segtitle>Bibliothèques installées</segtitle>
586
 
587
      <seglistitem>
588
        <seg>catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig,
589
        ldd, lddlibc4, locale, localedef, mtrace, nscd, pcprofiledump,
590
        pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace,
591
        zdump et zic</seg>
592
        <seg>ld.so, libBrokenLocale.{a,so}, libSegFault.so, libanl.{a,so},
593
        libbsd-compat.a, libc.{a,so}, libcidn.so, libcrypt.{a,so}, libdl.{a,so},
594
        libg.a, libieee.a, libm.{a,so}, libmcheck.a, libmemusage.so, libnsl.a,
595
        libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so,
596
        libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.{a,so},
597
        libresolv.{a,so}, librpcsvc.a, librt.{a,so}, libthread_db.so et
598
        libutil.{a,so}</seg>
599
      </seglistitem>
600
    </segmentedlist>
601
 
602
    <variablelist>
603
      <bridgehead renderas="sect3">Descriptions courtes</bridgehead>
604
      <?dbfo list-presentation="list"?>
605
      <?dbhtml list-presentation="table"?>
606
 
607
      <varlistentry id="catchsegv">
608
        <term><command>catchsegv</command></term>
609
        <listitem>
610
          <para>Peut être utilisé pour créer une trace de la pile lorsqu'un prog
611
                                        s'arrête avec une erreur de segmentation</para>
612
          <indexterm zone="ch-system-glibc catchsegv">
613
            <primary sortas="b-catchsegv">catchsegv</primary>
614
          </indexterm>
615
        </listitem>
616
      </varlistentry>
617
 
618
      <varlistentry id="gencat">
619
        <term><command>gencat</command></term>
620
        <listitem>
621
          <para>Génère des catalogues de messages</para>
622
          <indexterm zone="ch-system-glibc gencat">
623
            <primary sortas="b-gencat">gencat</primary>
624
          </indexterm>
625
        </listitem>
626
      </varlistentry>
627
 
628
      <varlistentry id="getconf">
629
        <term><command>getconf</command></term>
630
        <listitem>
631
          <para>Affiche les valeurs de configuration du système pour les variabl
632
                                        spécifiques du système de fichiers</para>
633
          <indexterm zone="ch-system-glibc getconf">
634
            <primary sortas="b-getconf">getconf</primary>
635
          </indexterm>
636
        </listitem>
637
      </varlistentry>
638
 
639
      <varlistentry id="getent">
640
        <term><command>getent</command></term>
641
        <listitem>
642
          <para>Récupère les entrées à partir d'une base de données
643
                                        administrative</para>
644
          <indexterm zone="ch-system-glibc getent">
645
            <primary sortas="b-getent">getent</primary>
646
          </indexterm>
647
        </listitem>
648
      </varlistentry>
649
 
650
      <varlistentry id="iconv">
651
        <term><command>iconv</command></term>
652
        <listitem>
653
          <para>Réalise une conversion de l'ensemble des caractères</para>
654
          <indexterm zone="ch-system-glibc iconv">
655
            <primary sortas="b-iconv">iconv</primary>
656
          </indexterm>
657
        </listitem>
658
      </varlistentry>
659
 
660
      <varlistentry id="iconvconfig">
661
        <term><command>iconvconfig</command></term>
662
        <listitem>
663
          <para>Crée des fichiers de configuration rapidement chargeables pour
664
                                        le module <command>iconv</command></para>
665
          <indexterm zone="ch-system-glibc iconvconfig">
666
            <primary sortas="b-iconvconfig">iconvconfig</primary>
667
          </indexterm>
668
        </listitem>
669
      </varlistentry>
670
 
671
      <varlistentry id="ldconfig">
672
        <term><command>ldconfig</command></term>
673
        <listitem>
674
          <para>Configure les liens du chargeur dynamique</para>
675
          <indexterm zone="ch-system-glibc ldconfig">
676
            <primary sortas="b-ldconfig">ldconfig</primary>
677
          </indexterm>
678
        </listitem>
679
      </varlistentry>
680
 
681
      <varlistentry id="ldd">
682
        <term><command>ldd</command></term>
683
        <listitem>
684
          <para>Indique les bibliothèques partagées requises pour chaque
685
                                        programme ou bibliothèque partagée</para>
686
          <indexterm zone="ch-system-glibc ldd">
687
            <primary sortas="b-ldd">ldd</primary>
688
          </indexterm>
689
        </listitem>
690
      </varlistentry>
691
 
692
      <varlistentry id="lddlibc4">
693
        <term><command>lddlibc4</command></term>
694
        <listitem>
695
          <para>Assiste <command>ldd</command> avec des fichiers objets</para>
696
          <indexterm zone="ch-system-glibc lddlibc4">
697
            <primary sortas="b-lddlibc4">lddlibc4</primary>
698
          </indexterm>
699
        </listitem>
700
      </varlistentry>
701
 
702
      <varlistentry id="locale">
703
        <term><command>locale</command></term>
704
        <listitem>
705
          <para>Affiche diverses informations sur la locale courante</para>
706
          <indexterm zone="ch-system-glibc locale">
707
            <primary sortas="b-locale">locale</primary>
708
          </indexterm>
709
        </listitem>
710
      </varlistentry>
711
 
712
      <varlistentry id="localedef">
713
        <term><command>localedef</command></term>
714
        <listitem>
715
          <para>Compile les spécifications de locale</para>
716
          <indexterm zone="ch-system-glibc localedef">
717
            <primary sortas="b-localedef">localedef</primary>
718
          </indexterm>
719
        </listitem>
720
      </varlistentry>
721
 
722
      <varlistentry id="mtrace">
723
        <term><command>mtrace</command></term>
724
        <listitem>
725
          <para>Lit et interprète un fichier de trace mémoire et affiche un
726
                                        résumé dans un format lisible par un humain</para>
727
          <indexterm zone="ch-system-glibc mtrace">
728
            <primary sortas="b-mtrace">mtrace</primary>
729
          </indexterm>
730
        </listitem>
731
      </varlistentry>
732
 
733
      <varlistentry id="nscd">
734
        <term><command>nscd</command></term>
735
        <listitem>
736
          <para>Un démon pour les services de noms fournissant un cache pour les
737
                                        requêtes les plus communes/para>
738
          <indexterm zone="ch-system-glibc nscd">
739
            <primary sortas="b-nscd">nscd</primary>
740
          </indexterm>
741
        </listitem>
742
      </varlistentry>
743
 
744
      <varlistentry id="pcprofiledump">
745
        <term><command>pcprofiledump</command></term>
746
        <listitem>
747
          <para>Affiche des informations générées par un profilage du PC</para>
748
          <indexterm zone="ch-system-glibc pcprofiledump">
749
            <primary sortas="b-pcprofiledump">pcprofiledump</primary>
750
          </indexterm>
751
        </listitem>
752
      </varlistentry>
753
 
754
      <varlistentry id="pt_chown">
755
        <term><command>pt_chown</command></term>
756
        <listitem>
757
          <para>Un programme d'aide pour que <command>grantpt</command>
758
                                        initialise les droits des propriétaires, groupes et autres d'un
759
                                        pseudo-terminal esclave</para>
760
          <indexterm zone="ch-system-glibc pt_chown">
761
            <primary sortas="b-pt_chown">pt_chown</primary>
762
          </indexterm>
763
        </listitem>
764
      </varlistentry>
765
 
766
      <varlistentry id="rpcgen">
767
        <term><command>rpcgen</command></term>
768
        <listitem>
769
          <para>Génère du code C pour implémenter le protocole RPC
770
                                        (<foreignphrase>Remote Procedure Call</foreignphrase>)</para>
771
          <indexterm zone="ch-system-glibc rpcgen">
772
            <primary sortas="b-rpcgen">rpcgen</primary>
773
          </indexterm>
774
        </listitem>
775
      </varlistentry>
776
 
777
      <varlistentry id="rpcinfo">
778
        <term><command>rpcinfo</command></term>
779
        <listitem>
780
          <para>Fait un appel RPC à un serveur RPC</para>
781
          <indexterm zone="ch-system-glibc rpcinfo">
782
            <primary sortas="b-rpcinfo">rpcinfo</primary>
783
          </indexterm>
784
        </listitem>
785
      </varlistentry>
786
 
787
      <varlistentry id="sln">
788
        <term><command>sln</command></term>
789
        <listitem>
790
          <para>Un programme <command>ln</command> lié statiquement</para>
791
          <indexterm zone="ch-system-glibc sln">
792
            <primary sortas="b-sln">sln</primary>
793
          </indexterm>
794
        </listitem>
795
      </varlistentry>
796
 
797
      <varlistentry id="sprof">
798
        <term><command>sprof</command></term>
799
        <listitem>
800
          <para>Lit et affiche les données de profilage des objets partagés</para>
801
          <indexterm zone="ch-system-glibc sprof">
802
            <primary sortas="b-sprof">sprof</primary>
803
          </indexterm>
804
        </listitem>
805
      </varlistentry>
806
 
807
      <varlistentry id="tzselect">
808
        <term><command>tzselect</command></term>
809
        <listitem>
810
          <para>Demande à l'utilisateur l'emplacement géographique du système et
811
                                        donne la description du fuseau horaire correspondante</para>
812
          <indexterm zone="ch-system-glibc tzselect">
813
            <primary sortas="b-tzselect">tzselect</primary>
814
          </indexterm>
815
        </listitem>
816
      </varlistentry>
817
 
818
      <varlistentry id="xtrace">
819
        <term><command>xtrace</command></term>
820
        <listitem>
821
          <para>Trace l'exécution d'un programme en affichant la fonction en
822
                                        cours d'exécution</para>
823
          <indexterm zone="ch-system-glibc xtrace">
824
            <primary sortas="b-xtrace">xtrace</primary>
825
          </indexterm>
826
        </listitem>
827
      </varlistentry>
828
 
829
      <varlistentry id="zdump">
830
        <term><command>zdump</command></term>
831
        <listitem>
832
          <para>Afficheur de fuseau horaire</para>
833
          <indexterm zone="ch-system-glibc zdump">
834
            <primary sortas="b-zdump">zdump</primary>
835
          </indexterm>
836
        </listitem>
837
      </varlistentry>
838
 
839
      <varlistentry id="zic">
840
        <term><command>zic</command></term>
841
        <listitem>
842
          <para>Compilateur de fuseau horaire</para>
843
          <indexterm zone="ch-system-glibc zic">
844
            <primary sortas="b-zic">zic</primary>
845
          </indexterm>
846
        </listitem>
847
      </varlistentry>
848
 
849
      <varlistentry id="ld.so">
850
        <term><filename class="libraryfile">ld.so</filename></term>
851
        <listitem>
852
          <para>Le programme d'aide des bibliothèques partagées exécutables</para>
853
          <indexterm zone="ch-system-glibc ld.so">
854
            <primary sortas="c-ld.so">ld.so</primary>
855
          </indexterm>
856
        </listitem>
857
      </varlistentry>
858
 
859
      <varlistentry id="libBrokenLocale">
860
        <term><filename class="libraryfile">libBrokenLocale</filename></term>
861
        <listitem>
862
          <para>Utilisé en interne par Glibc comme une arme grossière pour
863
                                        résoudre les locales cassées (comme certaines applications Motif).
864
                                        Voir les commentaires dans
865
                                        <filename>glibc-&glibc-version;/locale/broken_cur_max.c</filename>
866
          pour plus d'informations</para>
867
          <indexterm zone="ch-system-glibc libBrokenLocale">
868
            <primary sortas="c-libBrokenLocale">libBrokenLocale</primary>
869
          </indexterm>
870
        </listitem>
871
      </varlistentry>
872
 
873
      <varlistentry id="libSegFault">
874
        <term><filename class="libraryfile">libSegFault</filename></term>
875
        <listitem>
876
          <para>Un gestionnaire de signaux d'erreurs de segmentation, utilisé
877
                                        par <command>catchsegv</command></para>
878
          <indexterm zone="ch-system-glibc libSegFault">
879
            <primary sortas="c-libSegFault">libSegFault</primary>
880
          </indexterm>
881
        </listitem>
882
      </varlistentry>
883
 
884
      <varlistentry id="libanl">
885
        <term><filename class="libraryfile">libanl</filename></term>
886
        <listitem>
887
          <para>Une bibliothèque asynchrone de recherche de noms</para>
888
          <indexterm zone="ch-system-glibc libanl">
889
            <primary sortas="c-libanl">libanl</primary>
890
          </indexterm>
891
        </listitem>
892
      </varlistentry>
893
 
894
      <varlistentry id="libbsd-compat">
895
        <term><filename class="libraryfile">libbsd-compat</filename></term>
896
        <listitem>
897
          <para>Fournit la portabilité nécessaire pour faire fonctionner certain
898
                                        programmes BSD (Berkeley Software Distribution) sous Linux</para>
899
          <indexterm zone="ch-system-glibc libbsd-compat">
900
            <primary sortas="c-libbsd-compat">libbsd-compat</primary>
901
          </indexterm>
902
        </listitem>
903
      </varlistentry>
904
 
905
      <varlistentry id="libc">
906
        <term><filename class="libraryfile">libc</filename></term>
907
        <listitem>
908
          <para>La principale bibliothèque C</para>
909
          <indexterm zone="ch-system-glibc libc">
910
            <primary sortas="c-libc">libc</primary>
911
          </indexterm>
912
        </listitem>
913
      </varlistentry>
914
 
915
      <varlistentry id="libcidn">
916
        <term><filename class="libraryfile">libcidn</filename></term>
917
        <listitem>
918
          <para>Utilisé en interne par Glibc pour la gestion des noms de
919
                                        domaine internationalisés dans la fonction
920
                                        <function>getaddrinfo()</function></para>
921
          <indexterm zone="ch-system-glibc libcrypt">
922
            <primary sortas="c-libcrypt">libcrypt</primary>
923
          </indexterm>
924
        </listitem>
925
      </varlistentry>
926
 
927
      <varlistentry id="libcrypt">
928
        <term><filename class="libraryfile">libcrypt</filename></term>
929
        <listitem>
930
          <para>La bibliothèque de chiffrement</para>
931
          <indexterm zone="ch-system-glibc libcrypt">
932
            <primary sortas="c-libcrypt">libcrypt</primary>
933
          </indexterm>
934
        </listitem>
935
      </varlistentry>
936
 
937
      <varlistentry id="libdl">
938
        <term><filename class="libraryfile">libdl</filename></term>
939
        <listitem>
940
          <para>La bibliothèque de l'interface du chargeur dynamique</para>
941
          <indexterm zone="ch-system-glibc libdl">
942
            <primary sortas="c-libdl">libdl</primary>
943
          </indexterm>
944
        </listitem>
945
      </varlistentry>
946
 
947
      <varlistentry id="libg">
948
        <term><filename class="libraryfile">libg</filename></term>
949
        <listitem>
950
          <para>Bibliothèque factice ne contenant aucune fonction.
951
                                        C'était auparavant une bibliothèque d'exécution pour
952
                                        <command>g++</command></para>
953
          <indexterm zone="ch-system-glibc libg">
954
            <primary sortas="c-libg">libg</primary>
955
          </indexterm>
956
        </listitem>
957
      </varlistentry>
958
 
959
      <varlistentry id="libieee">
960
        <term><filename class="libraryfile">libieee</filename></term>
961
        <listitem>
962
          <para>Un lien vers ce module provoque volontairement des règles de
963
                                        gestion d'erreur pour les fonctions math telles que définies par les
964
                                        <foreignphrase>Institute of Electrical and Electronic
965
                                        Engineers</foreignphrase> (IEEE). Le paramètre par défaut est la gesti
966
                                        POSIX.1</para>
967
          <indexterm zone="ch-system-glibc libieee">
968
            <primary sortas="c-libieee">libieee</primary>
969
          </indexterm>
970
        </listitem>
971
      </varlistentry>
972
 
973
      <varlistentry id="libm">
974
        <term><filename class="libraryfile">libm</filename></term>
975
        <listitem>
976
                                                <para>La bibliothèque mathématique</para>
977
          <indexterm zone="ch-system-glibc libm">
978
            <primary sortas="c-libm">libm</primary>
979
          </indexterm>
980
        </listitem>
981
      </varlistentry>
982
 
983
      <varlistentry id="libmcheck">
984
        <term><filename class="libraryfile">libmcheck</filename></term>
985
        <listitem>
986
          <para>Active le test d'allocation de mémoire lorsqu'on y relie
987
                                        quelque chose</para>
988
          <indexterm zone="ch-system-glibc libmcheck">
989
            <primary sortas="c-libmcheck">libmcheck</primary>
990
          </indexterm>
991
        </listitem>
992
      </varlistentry>
993
 
994
      <varlistentry id="libmemusage">
995
        <term><filename class="libraryfile">libmemusage</filename></term>
996
        <listitem>
997
          <para>Utilisé par <command>memusage</command> pour aider à la récupéra
998
                                        d'informations sur l'utilisation de la mémoire par un programme</para>
999
          <indexterm zone="ch-system-glibc libmemusage">
1000
            <primary sortas="c-libmemusage">libmemusage</primary>
1001
          </indexterm>
1002
        </listitem>
1003
      </varlistentry>
1004
 
1005
      <varlistentry id="libnsl">
1006
        <term><filename class="libraryfile">libnsl</filename></term>
1007
        <listitem>
1008
          <para>La bibliothèque de services réseau</para>
1009
          <indexterm zone="ch-system-glibc libnsl">
1010
            <primary sortas="c-libnsl">libnsl</primary>
1011
          </indexterm>
1012
        </listitem>
1013
      </varlistentry>
1014
 
1015
      <varlistentry id="libnss">
1016
        <term><filename class="libraryfile">libnss</filename></term>
1017
        <listitem>
1018
          <para>Les bibliothèques Name Service Switch, contenant
1019
                                        des fonctions de résolution de noms d'hôtes, de noms d'utilisateurs,
1020
                                        de noms de groupes, d'alias, de services, de protocoles et ainsi de
1021
                                        suite</para>
1022
          <indexterm zone="ch-system-glibc libnss">
1023
            <primary sortas="c-libnss">libnss</primary>
1024
          </indexterm>
1025
        </listitem>
1026
      </varlistentry>
1027
 
1028
      <varlistentry id="libpcprofile">
1029
        <term><filename class="libraryfile">libpcprofile</filename></term>
1030
        <listitem>
1031
          <para>Contient des fonctions de profilage utilisées pour tracer le
1032
                                        temps CPU dépensé sur les lignes de code source</para>
1033
          <indexterm zone="ch-system-glibc libpcprofile">
1034
            <primary sortas="c-libpcprofile">libpcprofile</primary>
1035
          </indexterm>
1036
        </listitem>
1037
      </varlistentry>
1038
 
1039
      <varlistentry id="libpthread">
1040
        <term><filename class="libraryfile">libpthread</filename></term>
1041
        <listitem>
1042
          <para>La bibliothèque threads POSIX</para>
1043
          <indexterm zone="ch-system-glibc libpthread">
1044
            <primary sortas="c-libpthread">libpthread</primary>
1045
          </indexterm>
1046
        </listitem>
1047
      </varlistentry>
1048
 
1049
      <varlistentry id="libresolv">
1050
        <term><filename class="libraryfile">libresolv</filename></term>
1051
        <listitem>
1052
          <para>Contient des fonctions de création, d'envoi et d'interprétation
1053
                                        de paquets pour les serveurs de noms de domaine Internet</para>
1054
          <indexterm zone="ch-system-glibc libresolv">
1055
            <primary sortas="c-libresolv">libresolv</primary>
1056
          </indexterm>
1057
        </listitem>
1058
      </varlistentry>
1059
 
1060
      <varlistentry id="librpcsvc">
1061
        <term><filename class="libraryfile">librpcsvc</filename></term>
1062
        <listitem>
1063
          <para>Contient des fonctions apportant différents services RPC</para>
1064
          <indexterm zone="ch-system-glibc librpcsvc">
1065
            <primary sortas="c-librpcsvc">librpcsvc</primary>
1066
          </indexterm>
1067
        </listitem>
1068
      </varlistentry>
1069
 
1070
      <varlistentry id="librt">
1071
        <term><filename class="libraryfile">librt</filename></term>
1072
        <listitem>
1073
          <para>Contient des fonctions fournissant la plupart des interfaces
1074
                                        spécifiées par l'extension temps réel de POSIX.1b</para>
1075
          <indexterm zone="ch-system-glibc librt">
1076
            <primary sortas="c-librt">librt</primary>
1077
          </indexterm>
1078
        </listitem>
1079
      </varlistentry>
1080
 
1081
      <varlistentry id="libthread_db">
1082
        <term><filename class="libraryfile">libthread_db</filename></term>
1083
        <listitem>
1084
          <para>Contient des fonctions utiles pour construire des débogueurs de
1085
                                        programmes multi-threads</para>
1086
          <indexterm zone="ch-system-glibc libthread_db">
1087
            <primary sortas="c-libthread_db">libthread_db</primary>
1088
          </indexterm>
1089
        </listitem>
1090
      </varlistentry>
1091
 
1092
      <varlistentry id="libutil">
1093
        <term><filename class="libraryfile">libutil</filename></term>
1094
        <listitem>
1095
          <para>Contient du code pour les fonctions <quote>standard</quote>
1096
                                        utilisées par de nombreux outils Unix</para>
1097
          <indexterm zone="ch-system-glibc libutil">
1098
            <primary sortas="c-libutil">libutil</primary>
1099
          </indexterm>
1100
        </listitem>
1101
      </varlistentry>
1102
 
1103
    </variablelist>
1104
 
1105
  </sect2>
1106
 
1107
</sect1>