|
Lines 40-51
Link Here
|
| 40 |
<body> |
40 |
<body> |
| 41 |
|
41 |
|
| 42 |
<p> |
42 |
<p> |
| 43 |
La plupart des applications utilisent des bibliothèques partagées (shared |
43 |
La plupart des applications utilisent des bibliothèques partagées (« shared |
| 44 |
libraries). Ces bibliothèques partagées ont besoin d'être chargées en mémoire |
44 |
libraries »). Ces bibliothèques partagées ont besoin d'être chargées en |
| 45 |
lors de l'exécution de l'application et les références aux différents symboles |
45 |
mémoire lors de l'exécution de l'application et les références aux différents |
| 46 |
doivent être résolues. Pour la plupart des petits programmes, cette liaison |
46 |
symboles doivent être résolues. Pour la plupart des petits programmes, cette |
| 47 |
dynamique est très rapide. Mais pour les programmes écrits en C++ qui ont |
47 |
liaison dynamique est très rapide. Mais pour les programmes écrits en C++ qui |
| 48 |
beaucoup de dépendances, la liaison dynamique peut prendre un temps |
48 |
ont beaucoup de dépendances, la liaison dynamique peut prendre un temps |
| 49 |
considérable. |
49 |
considérable. |
| 50 |
</p> |
50 |
</p> |
| 51 |
|
51 |
|
|
Lines 79-86
Link Here
|
| 79 |
plus rapidement.</li> |
79 |
plus rapidement.</li> |
| 80 |
<li>Si une application prelinkée voit une de ses bibliothèques modifiée (mise à |
80 |
<li>Si une application prelinkée voit une de ses bibliothèques modifiée (mise à |
| 81 |
jour), alors il faut relancer <path>prelink</path> sur l'application, dans le |
81 |
jour), alors il faut relancer <path>prelink</path> sur l'application, dans le |
| 82 |
cas contraire vous n'obtiendrez aucune amélioration de vitesse. En fait à |
82 |
cas contraire vous n'obtiendrez aucune amélioration de vitesse. En fait, à |
| 83 |
chaque fois que vous mettez à jour un paquet via portage qui met à jour des |
83 |
chaque fois que vous mettez à jour via Portage un paquet qui met à jour des |
| 84 |
bibliothèques, vous devez relancer <path>prelink</path> sur ces |
84 |
bibliothèques, vous devez relancer <path>prelink</path> sur ces |
| 85 |
bibliothèques.</li> |
85 |
bibliothèques.</li> |
| 86 |
<li>Les modifications effectuées sur le binaire sont complètement réversibles. |
86 |
<li>Les modifications effectuées sur le binaire sont complètement réversibles. |
|
Lines 146-152
Link Here
|
| 146 |
<p> |
146 |
<p> |
| 147 |
Un certain nombre de personnes ont obtenu des erreurs lors de l'installation |
147 |
Un certain nombre de personnes ont obtenu des erreurs lors de l'installation |
| 148 |
parce que des tests ont échoué. Ces tests ont été mis en place pour des raisons de |
148 |
parce que des tests ont échoué. Ces tests ont été mis en place pour des raisons de |
| 149 |
sécurité, le comportement de prelink est incertain si vous les désactivez. |
149 |
sécurité ; le comportement de prelink est incertain si vous les désactivez. |
| 150 |
Les erreurs d'emerge proviennent habituellement des paquets de base : binutils, |
150 |
Les erreurs d'emerge proviennent habituellement des paquets de base : binutils, |
| 151 |
gcc et glibc. Essayez de réinstaller ces paquets dans cet ordre. |
151 |
gcc et glibc. Essayez de réinstaller ces paquets dans cet ordre. |
| 152 |
</p> |
152 |
</p> |
|
Lines 189-196
Link Here
|
| 189 |
</pre> |
189 |
</pre> |
| 190 |
|
190 |
|
| 191 |
<note> |
191 |
<note> |
| 192 |
Vous pouvez ajouter des répertoires dans la liste, séparez-les par |
192 |
Vous pouvez ajouter des répertoires dans la liste ; séparez-les par |
| 193 |
deux points ':'. |
193 |
deux points « : ». |
| 194 |
</note> |
194 |
</note> |
| 195 |
|
195 |
|
| 196 |
</body> |
196 |
</body> |
|
Lines 213-224
Link Here
|
| 213 |
</pre> |
213 |
</pre> |
| 214 |
|
214 |
|
| 215 |
<warn> |
215 |
<warn> |
| 216 |
On a remarqué que dans le cas d'un petit espace disque disponible |
216 |
Si l'espace disque disponible est limité <path>prelink</path> risque de tronquer |
| 217 |
<path>prelink</path> risque de tronquer vos binaires si vous traitez |
217 |
vos binaires si vous traitez l'intégralité de votre système, ce qui rendra votre |
| 218 |
l'intégralité de votre système, ce qui rendra votre système inutilisable. |
218 |
système inutilisable. Utilisez les commandes « file » ou |
| 219 |
Utilisez les commandes "file" ou "readelf" afin de vérifier l'état d'un fichier |
219 |
« readelf » afin de vérifier l'état d'un fichier binaire. Vous pouvez |
| 220 |
binaire. Vous pouvez également vérifier l'espace libre de vos disques avant de |
220 |
également vérifier l'espace libre de vos disques avant de lancer |
| 221 |
lancer <path>prelink</path> avec <c>df -h</c>. |
221 |
<path>prelink</path> avec <c>df -h</c>. |
| 222 |
</warn> |
222 |
</warn> |
| 223 |
|
223 |
|
| 224 |
<table> |
224 |
<table> |
|
Lines 228-256
Link Here
|
| 228 |
</tr> |
228 |
</tr> |
| 229 |
<tr> |
229 |
<tr> |
| 230 |
<th>-a</th> |
230 |
<th>-a</th> |
| 231 |
<ti>Tous (<b>a</b>ll) les binaires sont passés à <path>prelink</path></ti> |
231 |
<ti>Tous (« <b>a</b>ll ») les binaires sont passés à |
|
|
232 |
<path>prelink</path></ti> |
| 232 |
</tr> |
233 |
</tr> |
| 233 |
|
234 |
|
| 234 |
<tr> |
235 |
<tr> |
| 235 |
<th>-f</th> |
236 |
<th>-f</th> |
| 236 |
<ti>Oblige (<b>f</b>orce) <path>prelink</path> à traiter les binaires déjà |
237 |
<ti>Oblige (« <b>f</b>orce ») <path>prelink</path> à traiter les |
| 237 |
traités. Ceci est nécessaire car sinon <path>prelink</path> échoue si des |
238 |
binaires déjà traités. Ceci est nécessaire car sinon <path>prelink</path> échoue |
| 238 |
fichiers anciennement traités sont présents et que leurs dépendances vers les |
239 |
si des fichiers anciennement traités sont présents et que leurs dépendances vers |
| 239 |
bibliothèques ont changé. |
240 |
les bibliothèques ont changé. |
| 240 |
</ti> |
241 |
</ti> |
| 241 |
</tr> |
242 |
</tr> |
| 242 |
|
243 |
|
| 243 |
<tr> |
244 |
<tr> |
| 244 |
<th>-m</th> |
245 |
<th>-m</th> |
| 245 |
<ti>Conserve l'espace de <b>m</b>émoire virtuelle, nécessaire si vous avez |
246 |
<ti>Conserve l'espace de <b>m</b>émoire virtuelle, nécessaire si vous avez |
| 246 |
beaucoup de bibliothèques qui ont besoin d'être traitées. |
247 |
beaucoup de bibliothèques qui ont besoin d'être traitées. |
| 247 |
</ti> |
248 |
</ti> |
| 248 |
</tr> |
249 |
</tr> |
| 249 |
|
250 |
|
| 250 |
<tr> |
251 |
<tr> |
| 251 |
<th>-R</th> |
252 |
<th>-R</th> |
| 252 |
<ti>Rend aléatoire (<b>r</b>andom) l'ordre d'adressage, ceci afin d'améliorer |
253 |
<ti>Rend aléatoire (« <b>r</b>andom ») l'ordre d'adressage, ceci afin |
| 253 |
la sécurité contre les dépassements de capacité (buffer overflows). |
254 |
d'améliorer la sécurité contre les dépassements de capacité (« buffer |
|
|
255 |
overflows »). |
| 254 |
</ti> |
256 |
</ti> |
| 255 |
</tr> |
257 |
</tr> |
| 256 |
</table> |
258 |
</table> |
|
Lines 264-272
Link Here
|
| 264 |
</chapter> |
266 |
</chapter> |
| 265 |
|
267 |
|
| 266 |
<chapter> |
268 |
<chapter> |
| 267 |
<title>Problèmes connus et leur correction</title> |
269 |
<title>Problèmes connus et leurs corrections</title> |
| 268 |
<section> |
270 |
<section> |
| 269 |
<title>"Cannot prelink against non-PIC shared library"</title> |
271 |
<title>« Cannot prelink against non-PIC shared library »</title> |
| 270 |
<body> |
272 |
<body> |
| 271 |
|
273 |
|
| 272 |
<p> |
274 |
<p> |
|
Lines 300-313
Link Here
|
| 300 |
</pre> |
302 |
</pre> |
| 301 |
|
303 |
|
| 302 |
<note> |
304 |
<note> |
| 303 |
Beaucoup de bibliothèques sont liées statiquement à zlib et/ou à tcp-wrappers, |
305 |
Beaucoup de bibliothèques sont liées statiquement à zlib et/ou à tcp-wrappers. |
| 304 |
donc essayez d'abord d'installer ces paquets puis de réinstaller les |
306 |
Donc, essayez d'abord d'installer ces paquets puis de réinstaller les |
| 305 |
bibliothèques à problèmes. |
307 |
bibliothèques à problèmes. |
| 306 |
</note> |
308 |
</note> |
| 307 |
|
309 |
|
| 308 |
<p> |
310 |
<p> |
| 309 |
Si vous rencontrez des problèmes avec le prelink de QT/KDE, essayez d'abord |
311 |
Si vous rencontrez des problèmes avec le prelink de QT/KDE, essayez d'abord |
| 310 |
de vous mettre à jour vers >=x11-base/xfree-4.2.1-r2 et |
312 |
de mettre à jour votre système vers >=x11-base/xfree-4.2.1-r2 et |
| 311 |
>=x11-libs/qt-3.1.0-r1. Si QT échoue encore, essayez alors de compiler QT sans |
313 |
>=x11-libs/qt-3.1.0-r1. Si QT échoue encore, essayez alors de compiler QT sans |
| 312 |
le support de xinerama en ajoutant myconf="-no-xinerama ${myconf}" dans |
314 |
le support de xinerama en ajoutant myconf="-no-xinerama ${myconf}" dans |
| 313 |
l'ebuild de QT. |
315 |
l'ebuild de QT. |
|
Lines 327-333
Link Here
|
| 327 |
|
329 |
|
| 328 |
<p> |
330 |
<p> |
| 329 |
Si votre bibliothèque problématique n'est pas présente dans la liste, nous |
331 |
Si votre bibliothèque problématique n'est pas présente dans la liste, nous |
| 330 |
vous prions de nous le rapporter avec, de préférence, un patch pour ajouter |
332 |
vous prions de nous le rapporter avec, de préférence, un correctif pour ajouter |
| 331 |
<b>-fPIC</b> au CFLAGS approprié. |
333 |
<b>-fPIC</b> au CFLAGS approprié. |
| 332 |
</p> |
334 |
</p> |
| 333 |
|
335 |
|
|
Lines 335-342
Link Here
|
| 335 |
</section> |
337 |
</section> |
| 336 |
|
338 |
|
| 337 |
<section> |
339 |
<section> |
| 338 |
<title>Échec lors du prelink d'un fichier, avec "1631 Aborted |
340 |
<title>Échec lors du prelink d'un fichier, avec « 1631 Aborted |
| 339 |
..."</title> |
341 |
... »</title> |
| 340 |
<body> |
342 |
<body> |
| 341 |
|
343 |
|
| 342 |
<p> |
344 |
<p> |
|
Lines 348-359
Link Here
|
| 348 |
</section> |
350 |
</section> |
| 349 |
|
351 |
|
| 350 |
<section> |
352 |
<section> |
| 351 |
<title>"<file>: error while loading shared libraries: |
353 |
<title>« <file>: error while loading shared libraries: |
| 352 |
unexpected reloc type..."</title> |
354 |
unexpected reloc type... »</title> |
| 353 |
<body> |
355 |
<body> |
| 354 |
|
356 |
|
| 355 |
<p> |
357 |
<p> |
| 356 |
Ce bug a été corrigé dans sys-libs/glibc-2.3.1-r2 le 18/11/2002, réinstallez |
358 |
Ce bug a été corrigé dans sys-libs/glibc-2.3.1-r2 le 18/11/2002 ; réinstallez |
| 357 |
glibc s'il est trop ancien. |
359 |
glibc s'il est trop ancien. |
| 358 |
</p> |
360 |
</p> |
| 359 |
|
361 |
|
|
Lines 394-422
Link Here
|
| 394 |
</p> |
396 |
</p> |
| 395 |
|
397 |
|
| 396 |
<p> |
398 |
<p> |
| 397 |
"Je suppose que tout se trouve dans le fichier |
399 |
« Je suppose que tout se trouve dans le fichier téléchargé, et donc que rien |
| 398 |
téléchargé, et donc que rien ne dépendra des bibliothèques locales sur le |
400 |
ne dépendra des bibliothèques locales sur le système cible. Malheureusement avec |
| 399 |
système cible. Malheureusement avec Linux, et je pense avec quoi que ce soit |
401 |
Linux, et, je pense, avec quoi que ce soit d'autre utilisant la GLIBC, ce n'est |
| 400 |
d'autre utilisant la GLIBC, ce n'est plus tout à fait vrai. Prenons "libnss" |
402 |
plus tout à fait vrai. Prenons « libnss » (« Sélecteur de Service |
| 401 |
("Sélecteur de Service de Nom", certains semblent appeler ça "Système de |
403 |
de Nom », certains semblent appeler ça « Système de Sécurité |
| 402 |
Sécurité Réseau") qui procure des fonctions permettant l'utilisation de |
404 |
Réseau ») qui procure des fonctions permettant l'utilisation de diverses |
| 403 |
diverses bases de données pour l'authentification, les informations sur le |
405 |
bases de données pour l'authentification, les informations sur le réseau et |
| 404 |
réseau et autres. C'est supposé rendre les programmes |
406 |
autres. C'est supposé rendre les programmes indépendants de l'environnement |
| 405 |
indépendants de l'environnement réseau actuel de la machine, configuré |
407 |
réseau actuel de la machine, configuré séparément. Bonne idée, mais les |
| 406 |
séparément. Bonne idée, mais les changements de la GLIBC peuvent entraîner |
408 |
changements de la GLIBC peuvent entraîner des problèmes lors de son chargement. |
| 407 |
des problèmes lors de son chargement. Et vous ne pouvez pas lier statiquement |
409 |
Et vous ne pouvez pas lier statiquement « libnss », car elle est |
| 408 |
"libnss", car elle est configurée indépendamment pour chaque machine. Le |
410 |
configurée indépendamment pour chaque machine. Le problème provient, je pense, |
| 409 |
problème provient, je pense, principalement de la liaison statique des autres |
411 |
principalement de la liaison statique des autres bibliothèques de la GLIBC, |
| 410 |
bibliothèques de la GLIBC, notamment "libpthread", "libm" et "libc" |
412 |
notamment « libpthread », « libm » et « libc » |
| 411 |
desquelles proviennent des appels aux fonctions de "libnss" incompatibles." |
413 |
desquelles proviennent des appels aux fonctions de « libnss » |
|
|
414 |
incompatibles. » |
| 412 |
</p> |
415 |
</p> |
| 413 |
|
416 |
|
| 414 |
</body> |
417 |
</body> |
| 415 |
</section> |
418 |
</section> |
| 416 |
|
419 |
|
| 417 |
<section> |
420 |
<section> |
| 418 |
<title>Prelink échoue avec l'erreur "prelink: dso.c:306: fdopen_dso: |
421 |
<title>Prelink échoue avec l'erreur « prelink: dso.c:306: fdopen_dso: |
| 419 |
Assertion 'j == k' failed."</title> |
422 |
Assertion 'j == k' failed. »</title> |
| 420 |
<body> |
423 |
<body> |
| 421 |
|
424 |
|
| 422 |
<p> |
425 |
<p> |
|
Lines 438-448
Link Here
|
| 438 |
|
441 |
|
| 439 |
<p> |
442 |
<p> |
| 440 |
Pour faire marcher <path>prelink</path> sur un système sous grsecurity qui |
443 |
Pour faire marcher <path>prelink</path> sur un système sous grsecurity qui |
| 441 |
utilise |
444 |
utilise une base mmap() aléatoire, il est nécessaire de désactiver |
| 442 |
une base mmap() aléatoire, il est nécessaire de désactiver "randomized mmap() |
445 |
« randomized mmap() base » pour les fichiers |
| 443 |
base" pour les fichiers <path>/lib/ld-2.3.*.so</path>. Pour ce faire, vous |
446 |
<path>/lib/ld-2.3.*.so</path>. Pour ce faire, vous devez utiliser l'utilitaire |
| 444 |
devez utiliser l'utilitaire <c>chpax</c>, mais vous devez le faire sans que le |
447 |
<c>chpax</c>, mais vous devez le faire sans que le fichier ne soit utilisé (par |
| 445 |
fichier ne soit utilisé (par exemple démarrez sur un LiveCD). |
448 |
exemple démarrez sur un LiveCD). |
| 446 |
</p> |
449 |
</p> |
| 447 |
|
450 |
|
| 448 |
</body> |
451 |
</body> |