/usr/share/doc/HOWTO/fr-html/Glibc2-HOWTO.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>HOWTO Glibc 2</title>
</head>
<body>
<h1>HOWTO Glibc 2</h1>
<h2>Eric Green, <code>ejg3@cornell.edu</code></h2>
v1.5, 8 février 1998
<hr>
<em><!--
Bibliothèque C GNU (voir glibc)
-->
<!--
glibc
-->
(Maintenance de la version française par Géraud
Canet, <code>canet@labri.u-bordeaux.fr</code>) Le HOWTO Glibc 2
couvre l'installation et l'utilisation de la bibliothèque C
GNU version 2 (libc 6) sur les systèmes Linux.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<h2><a name="ss1.1">1.1 Note du traducteur</a></h2>
<p>Ce document a été traduit et maintenu
jusqu'à la version 1.4 par Olivier Tharan, dont je ne fais
que reprendre modestement le travail.</p>
<p>Le document est truffé de signes "cabalistiques" comme
des dièse et des pourcent, dont la représentation en
SGML est respectivement <code>&num;</code> et
<code>&percnt;</code> ; le source LaTeX
généré par les outils de conversion SGML
introduit le signe antislash devant ces signes et reste dans la
version PostScript de ce document. Les données d'exemple
sont donc erronées, mais vous pouvez vous rapporter à
la version HTML du document qui n'a pas ces erreurs. La version
d'origine connait les mêmes problèmes.</p>
<h2><a name="ss1.2">1.2 À propos de glibc 2</a></h2>
<p><!--
glibc!vue d'ensemble
--></p>
<p>Glibc 2 est la toute dernière version de la
bibliothèque C du GNU. Elle fonctionne pour l'instant sans
modifications sur les systèmes GNU Hurd, et les
systèmes Linux sur architectures i386, m68k et alpha. Les
adaptations pour Linux PowerPC, MIPS, Sparc, Sparc 64 et ARM seront
dans la version 2.1. À l'avenir, d'autres architectures et
systèmes d'exploitation seront supportés.</p>
<p>Sur Linux, glibc 2 est utilisée comme libc avec un
numéro majeur de version égal à 6, le
successeur de la libc 5 pour Linux. Elle est destinée par
les développeurs de la libc Linux à remplacer en fin
de compte la libc 5. À l'heure de la version 2.0.6, on
considère que glibc est de qualité suffisante pour
être utilisée en production. La version 2.1 (à
venir dans un futur proche) sera prête pour une utilisation
normale avec l'ajout de plus de portages et de
possibilités.</p>
<p>Il y a trois extensions disponibles en option sur la glibc 2
:</p>
<dl>
<dt><b>Crypt</b></dt>
<dd>
<p>Le paquetage UFC-crypt pour le cryptage des données. Il
est disponible séparément à cause de
restrictions à l'exportation.</p>
</dd>
<dt><b>LinuxThreads</b></dt>
<dd>
<p>Une mise en oeuvre de l'interface Posix 1003.1c "pthread".</p>
</dd>
<dt><b>Locale data</b></dt>
<dd>
<p>Contient les données nécessaires à la
construction des fichiers de données locale pour utiliser
les possibilités d'internationalisation de la glibc.</p>
</dd>
</dl>
<p>Les extensions crypt et LinuxThreads sont fortement
recommandées... Ne pas les utiliser risque de les rendre
incompatibles avec les bibliothèques d'autres
systèmes. (Si vous ne voulez pas les utiliser, vous devez
ajouter l'option --disable-sanity-checks quand vous lancez
configure.)</p>
<h2><a name="ss1.3">1.3 À propos de ce document</a></h2>
<p>Ce HOWTO couvre l'installation de la bibliothèque glibc 2
sur un système Linux existant. Il est fait pour les
utilisateurs de systèmes à base de processeurs Intel
qui utilisent pour l'instant la libc 5, mais les utilisateurs
d'autres systèmes et de bibliothèques similaires
(comme la glibc 1) devraient pouvoir utiliser ces informations en
substituant les noms de fichiers et d'architecture adéquats
aux endroits appropriés.</p>
<p>La copie la plus récente de ce HOWTO fait partie du
<a href="http://sunsite.unc.edu/LDP">Linux Documentation
Project</a>, ou bien vous en trouverez une version à
<a href="http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html">http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html</a>.</p>
<h2><a name="ss1.4">1.4 Changements récents dans ce
document</a></h2>
<p>Différences entre la version 1.5 et 1.4 :</p>
<ul>
<li>Indexage ajouté par Ed Bailey.</li>
<li>Changement de mon adresse électronique.</li>
</ul>
<p>Différences entre la version 1.4 et 1.3 :</p>
<ul>
<li>Changé l'état courant d'expérimental
à production.</li>
<li>Mis à jour la liste des portages en
développement.</li>
<li>Mis à jour la dernière version en 2.0.6.</li>
</ul>
<h2><a name="s2">2. Choix de la méthode
d'installation</a></h2>
<p><!--
glibc!installation
--></p>
<p>Il y a plusieurs manières d'installer glibc. Vous pouvez
installer les bibliothèques pour les tester, en continuant
d'utiliser les bibliothèques existantes par défaut,
tout en vous permettant d'essayer les nouvelles
bibliothèques par l'utilisation d'options différentes
à la compilation de votre programme. L'installation de cette
manière facilite aussi la désinstallation de glibc
dans le futur (cependant, tout programme lié avec la glibc
ne fonctionnera plus une fois que vous aurez enlevé les
bibliothèques). L'utilisation de glibc comme une
bibliothèque de test demande que vous compiliez les
bibliothèques à partir des sources. Il n'y a pas de
distribution binaire pour l'installation de cette manière.
Cette installation est décrite dans la section <a href=
"#test-install">installation comme bibliothèque de
test</a>.</p>
<p>L'autre manière de l'installer, décrite dans ce
document, est d'utiliser glibc comme bibliothèque
principale. Tous les nouveaux programmes que vous compilerez sur
votre système utiliseront glibc, bien que vous puissiez
toujours lier des programmes à vos anciennes
bibliothèques par des options de compilation
différentes. Vous pouvez, soit installer les
bibliothèques à partir de binaires, soit compiler la
bibliothèque vous-même. Si vous voulez changer les
options d'optimisation ou de configuration, ou utiliser une
extension qui n'est pas distribuée en paquetage binaire,
vous devrez obtenir la distribution de sources et compiler
vous-même. Cette procédure d'installation est
décrite dans la section <a href=
"#primary-install">installation comme bibliothèque C
principale</a>.</p>
<p>Frodo Looijaard décrit encore une autre manière
d'installer glibc. Sa méthode implique l'installation de
glibc comme bibliothèque secondaire et la mise en place d'un
compilateur croisé (<i>cross-compiler</i>) pour compiler en
utilisant glibc. Pour cette méthode, la procédure
d'installation est plus compliquée que l'installation en
tant que bibliothèque de test décrite dans ce
document, mais facilite la compilation et l'édition de liens
avec glibc. Cette méthode est décrite dans son
document <a href="http://huizen.dds.nl/~frodol/glibc/">Installer
glibc-2 sur Linux</a> (en anglais).</p>
<p>Si vous utilisez en ce moment un système Debian 1.3 et ne
voulez pas le mettre à jour en installant la version
instable de Debian pour utiliser glibc, le <a href=
"http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html">HOWTO
libc5 vers libc6 Debian</a> décrit la manière
d'utiliser les paquetages Debian pour mettre votre système
à jour.</p>
<p>Si vous installez glibc 2 sur un système important, vous
voudrez sans doute utiliser l'installation de test. Même s'il
n'y a pas de bogues, certains programmes devront être
modifiés avant compilation à cause de changements
dans les prototypes de fonctions et les types de
données.</p>
<h2><a name="getting"></a> <a name="s3">3. Obtenir la
bibliothèque</a></h2>
<p><!--
glibc!obtention
--></p>
<p>La glibc 2 contient le paquetage glibc et trois paquetages
supplémentaires optionnels, LinuxThreads, Locale et Crypt.
Vous pouvez trouver les sources à</p>
<ul>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz</a></li>
</ul>
<p>Il vous faudra à peu près 150 Mo d'espace disque
pour la compilation complète et l'installation.
L'installation binaire de base du paquetage de la
bibliothèque prend aux alentours de 50 Mo.</p>
<p>Les paquetages binaires pour la version 2.0.6 ne sont pas
disponibles. Les paquetages binaires pour la version 2.0.4 sont
disponibles pour i386 et m68k, et la version 2.0.1 pour les alpha,
vous les trouverez à</p>
<ul>
<li>Intel x86:
<ul>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz</a></li>
</ul>
</li>
<li>Alpha:
<ul>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-linux.tar.gz">
ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-linux.tar.gz</a></li>
</ul>
</li>
<li>m68k:
<ul>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz</a></li>
<li><a href=
"ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linux.bin.tar.gz">
ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linux.bin.tar.gz</a></li>
</ul>
</li>
</ul>
<p>Il y a des restrictions à l'exportation de l'extension
crypt. Les utilisateurs non-ressortissants des États-Unis
devraient l'obtenir à <a href=
"ftp://ftp.ifi.uio.no/pub/gnu">ftp://ftp.ifi.uio.no/pub/gnu</a>.</p>
<p>Si vous utilisez une distribution Red Hat, vous pouvez obtenir
les RPMs pour la glibc 2 à <a href=
"ftp://ftp.redhat.com/pub/redhat/">ftp://ftp.redhat.com/pub/redhat/</a>.
La glibc 2 est la bibliothèque C principale de la nouvelle
distribution Red Hat 5.0.</p>
<p>Si vous utilisez une distribution Debian, vous pouvez obtenir
les paquetages pour glibc 2 à <a href=
"ftp://ftp.debian.org/debian/dists/unstable/main/">ftp://ftp.debian.org/debian/dists/unstable/main/</a>.
Les fichiers sont nommés libc6. Glibc 2 fait maintenant
partie du paquetage de base de la version hamm de Debian, et sera
la libc principale quand Debian 2.0 sortira.</p>
<h2><a name="test-install"></a> <a name="s4">4. Installation comme
bibliothèque de test</a></h2>
<p><!--
glibc!test
--></p>
<p>Cette section couvre l'installation de glibc 2 comme
bibliothèque de test. Tout ce que vous compilerez sera
lié à vos bibliothèques existantes sauf si
vous donnez des paramètres supplémentaires pour les
lier aux nouvelles bibliothèques. Il semble que les chemins
d'accès soient compilés dans un certain nombre de
fichiers, et vous devrez probablement installer la
bibliothèque à partir des sources.</p>
<h2><a name="ss4.1">4.1 Compilation et installation</a></h2>
<h3>Éléments requis</h3>
<p><!--
glibc!test!éléments requis
--></p>
<ul>
<li>À peu pres 150 Mo d'espace disque libre</li>
<li>GNU make 3.75</li>
<li>gcc >= 2.7.2 (ou mieux, 2.7.2.1)</li>
<li>binutils 2.8.1 (pour les alpha vous devez utiliser une mise
à jour temporaire ou <i>snapshot</i>)</li>
<li>bash 2.0</li>
<li>autoconf 2.12 (si vous changez configure.in)</li>
<li>texinfo 3.11</li>
</ul>
<p>Sur un i586 à 133 MHz avec 64 Mo de RAM, il faut environ
trois heures pour compiler les bibliothèques
complètes avec les extensions. Sur un i686 à 200 MHz
chargé, il faut environ une demi-heure.</p>
<h3>Extraction des sources</h3>
<p><!--
glibc!test!sources, extraction
--></p>
<p>Vous devez extraire les sources des archives pour pouvoir les
compiler. La meilleure façon de procéder est de faire
ainsi :</p>
<blockquote>
<pre>
<code> tar xzf glibc-2.0.6.tar.gz
cd glibc-2.0.6
tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
tar xzf ../glibc-crypt-2.0.6.tar.gz
tar xzf ../glibc-localedata-2.0.6.tar.gz
</code>
</pre></blockquote>
<p>Ceci mettra les répertoires linuxthreads, crypt et
localedate dans le répertoire glibc-2.0.6 où
configure pourra trouver ces extensions.</p>
<h3>Configuration</h3>
<p><!--
glibc!test!configuration
--></p>
<p>Dans le répertoire glibc-2.0.6, créez un
répertoire appelé compile, et déplacez-vous
dedans. Tout le travail doit être effectué dans ce
répertoire, ce qui simplifiera le nettoyage (les
développeurs ne se sont pas très occupés de
rendre 'make clean' parfait pour l'instant).</p>
<blockquote>
<pre>
<code> mkdir compile
cd compile
</code>
</pre></blockquote>
<p>Lancez <code>../configure</code>. Pour utiliser les paquetages
d'extension, vous devez les spécifier avec --enable-add-ons,
comme --enable-add-ons=linuxthreads,crypt,localedata. Vous devez
aussi choisir un répertoire de destination pour
l'installation. /usr/i486-linuxglibc2 est un bon choix. La ligne de
commande de configure pour ceci serait :</p>
<blockquote>
<pre>
<code> ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
</code>
</pre></blockquote>
<h3>Compilation et installation</h3>
<p><!--
glibc!test!compilation
-->
<!--
glibc!test!installation
--></p>
<p>Pour compiler et vérifier, lancez :</p>
<blockquote>
<pre>
<code> make
make check
</code>
</pre></blockquote>
<p>Si le 'make check' réussit, installez la
bibliothèque :</p>
<blockquote>
<pre>
<code> make install
</code>
</pre></blockquote>
<h2><a name="ss4.2">4.2 Mise à jour du chargeur de liens
dynamique</a></h2>
<p><!--
glibc!test!chargeur de liens dynamique, mise à jour
-->
<!--
glibc!test!ld.so.conf, mise à jour
--></p>
<ol>
<li>Créez un lien à partir du nouvel
<code>ld.so</code> vers <code>/lib/ld-linux.so.2</code> :
<blockquote>
<pre>
<code> ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
</code>
</pre></blockquote>
C'est la seule bibliothèque dont l'emplacement est
fixé une fois qu'un programme est lié, et
l'utilisation d'un lien dans <code>/lib</code> facilitera le
passage à glibc en tant que bibliothèque C principale
quand la version stable sortira.</li>
<li>Éditez <code>/etc/ld.so.conf</code>. Vous devez ajouter
le chemin vers le répertoire lib dans lequel se trouvent les
nouvelles bibliothèques à la fin du fichier, qui sera
<code><préfixe>/lib</code>, comme
<code>/usr/i486-linuxglibc2/lib</code> dans l'exemple ci-dessus.
Après avoir modifié <code>/etc/ld.so.conf</code>,
lancez
<blockquote>
<pre>
<code> ldconfig -v
</code>
</pre></blockquote>
</li>
</ol>
<h2><a name="ss4.3">4.3 Configuration pour gcc</a></h2>
<p><!--
glibc!test!configuration de gcc
--></p>
<p>La dernière étape de l'installation est la mise
à jour de <code>/usr/lib/gcc-lib</code> pour que gcc sache
comment utiliser les nouvelles bibliothèques. D'abord vous
devez dupliquer la configuration existante. Pour savoir quelle est
la configuration en cours, utilisez l'option -v de gcc :</p>
<blockquote>
<pre>
<code> % gcc -v
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
</code>
</pre></blockquote>
<p>Dans ce cas, i486-unknown-linux est le système, et
2.7.2.2 est la version. Vous devez copier
<code>/usr/lib/gcc-lib/<système></code> vers le
nouveau répertoire système de test :</p>
<blockquote>
<pre>
<code> cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxglibc2
</code>
</pre></blockquote>
<p>Allez dans le nouveau répertoire système de test
et dans le répertoire version</p>
<blockquote>
<pre>
<code> cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
</code>
</pre></blockquote>
<p>et éditez le fichier <code>specs</code> se trouvant dans
ce répertoire. Dans ce fichier, changez
<code>/lib/ld-linux.so.1</code> en <code>/lib/ld-linux.so.2</code>.
Vous devrez aussi enlever toutes les expressions
<code>%{...:-lgmon}</code> du fichier, puisque glibc n'utilise pas
la bibliothèque gmon pour les optimisations. Vous trouverez
un fichier specs d'exemple dans la section <a href=
"#specs">Fichiers specs d'exemple</a>.</p>
<h2><a name="ss4.4">4.4 Mise à jour des liens des fichiers
d'en-tête</a></h2>
<p><!--
glibc!test!fichiers d'en-tête, mise à jour
--></p>
<p>Vous devez créer des liens dans votre nouveau
répertoire d'en-têtes vers d'autres répertoires
d'en-têtes :</p>
<blockquote>
<pre>
<code> cd /usr/i486-linuxglibc2/include
ln -s /usr/src/linux/include/linux
ln -s /usr/src/linux/include/asm
ln -s /usr/X11R6/include/X11
</code>
</pre></blockquote>
<p>Vous avez peut-être d'autres bibliothèques comme
ncurses qui nécessitent d'avoir leurs fichiers
d'en-têtes dans ce répertoire. Vous devriez copier ou
faire un lien vers ces fichiers depuis <code>/usr/include</code>.
(Certaines bibliothèques auront besoin d'être
recompilées avec glibc2 pour pouvoir fonctionner avec
glibc2. Dans ces cas, compilez simplement et installez les
paquetages dans <code>/usr/i486-linuxglibc2</code>.)</p>
<h2><a name="ss4.5">4.5 Test de l'installation</a></h2>
<p><!--
glibc!test
--></p>
<p>Pour tester l'installation, créez le programme suivant
dans un fichier appelé glibc.c :</p>
<blockquote>
<pre>
<code> #include <stdio.h>
main()
{
printf("hello world!\n");
}
</code>
</pre></blockquote>
<p>et compilez-le avec les options "-b <répertoire
d'installation> -nostdinc -I<répertoire
d'installation>/include -I/usr/lib/gcc-lib/<nouveau
système>/<version de gcc>/include" :</p>
<blockquote>
<pre>
<code> % gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
</code>
</pre></blockquote>
<p>Utilisez ldd pour vérifier que le programme a
été lié avec glibc2, et non avec votre
ancienne libc :</p>
<blockquote>
<pre>
<code> % ldd glibc
libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.6.so (0x4000d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
</code>
</pre></blockquote>
<p>S'il compile, que les liens sont effectués et qu'il
génère "hello world!" quand vous le lancez,
l'installation a fonctionné.</p>
<h2><a name="primary-install"></a> <a name="s5">5. Installation
comme bibliothèque C principale</a></h2>
<p><!--
glibc!installation
--></p>
<p>Cette section couvre l'installation de glibc2 comme
bibliothèque C principale. Tous les nouveaux programmes que
vous compilerez seront liés avec cette bibliothèque,
sauf si vous utilisez des options de compilation spéciales
pour le lier avec une autre version.</p>
<p>Si vous utilisez Redhat ou Debian et avez chargé les
fichier rpm ou deb adéquats, voyez les instructions
d'installation Redhat ou Debian. Vous pouvez alors sauter cette
section.</p>
<h2><a name="compiling"></a> <a name="ss5.1">5.1 Construction de la
bibliothèque à partir des sources</a></h2>
<p><!--
glibc!installation!compilation
--></p>
<p>Cette section explique comment compiler glibc 2 et ses
extensions à partir des sources. Vous devez compiler la
bibliothèque si vous voulez changer les options
d'optimisation ou de configuration ou utiliser un paquetage pour
lequel vous n'avez pas de binaire.</p>
<h3>Éléments requis</h3>
<p><!--
glibc!installation!éléments requis
--></p>
<ul>
<li>Environ 150 Mo d'espace disque libre</li>
<li>GNU make 3.75</li>
<li>gcc >= 2.7.2 (ou mieux, 2.7.2.1)</li>
<li>binutils 2.8.1 (pour les alpha vous aurez besoin d'une version
'snapshot')</li>
<li>bash 2.0</li>
<li>autoconf 2.12 (si vous changez configure.in)</li>
<li>texinfo 3.11</li>
</ul>
<p>Sur un i586 à 133 MHz avec 64 Mo de RAM, il faut environ
trois heures pour compiler toutes les bibliothèques avec les
extensions. Sur un i686 à 200 MHz chargé, il faut
environ une demi-heure.</p>
<h3>Extraction des sources</h3>
<p><!--
glibc!installation!sources, extraction
--></p>
<p>Vous devez extraire les sources des archives pour compiler. La
meilleure façon de le faire est ainsi :</p>
<blockquote>
<pre>
<code> tar xzf glibc-2.0.6.tar.gz
cd glibc-2.0.6
tar xzf ../glibc-linuxthreads-2.0.6.tar.gz
tar xzf ../glibc-crypt-2.0.6.tar.gz
tar xzf ../glibc-localedata-2.0.6.tar.gz
</code>
</pre></blockquote>
<p>Ceci mettra les répertoires linuxthreads, crypt et
localedata dans le répertoire glibc-2.0.6 où
configure pourra trouver ces extensions.</p>
<h3>Configuration</h3>
<p><!--
glibc!installation!configuration
--></p>
<p>Dans le répertoire <code>glibc-2.0.6</code>, créez
un répertoire nommé compile, et allez dedans. Tout le
travail sera fait dans ce répertoire, ce qui simplifiera le
nettoyage (les développeurs ne se sont pas vraiment
soucié du 'make clean' pour l'instant).</p>
<blockquote>
<pre>
<code>mkdir compile
cd compile
</code>
</pre></blockquote>
<p>Lancez <code>../configure</code>. Pour utiliser les paquetages
supplémentaires, vous devez les spécifier avec
--enable-add-ons, comme
--enable-add-ons=linuxthreads,crypt,localedata. Vous devrez aussi
sûrement spécifier les chemins où elle sera
installée. Pour coller aux distributions Linux normales,
spécifiez --prefix=/usr. (Quand on spécifie le
préfixe <code>/usr</code> sur un système Linux,
configure sait ajuster les autres chemins pour placer libc.so et
d'autres bibliothèques importantes dans <code>/lib</code>.)
La ligne de commande complète de configure serait :</p>
<blockquote>
<pre>
<code> ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr
</code>
</pre></blockquote>
<h3>Compilation</h3>
<p><!--
glibc!installation!compilation
--></p>
<p>Pour compiler et vérifier, lancez :</p>
<blockquote>
<pre>
<code> make
make check
</code>
</pre></blockquote>
<h2><a name="ss5.2">5.2 Préparation à
l'installation</a></h2>
<p><!--
glibc!installation!preparation pour
--></p>
<p>Vous devez maintenant déplacer certains fichiers pour
vous préparer à l'arrivée de la nouvelle
bibliothèque, que vous l'installiez à partir des
sources ou de binaires. Tous les nouveaux programmes
compilés seront liés à glibc, mais les vieux
programmes qui ne sont pas liés en statique
dépendront encore de libc 5, et vous ne pouvez donc pas
écraser l'ancienne version.</p>
<ol>
<li>Créez un nouveau répertoire pour y mettre les
anciens fichiers :
<blockquote>
<pre>
<code> mkdir -p /usr/i486-linuxlibc5/lib
</code>
</pre></blockquote>
</li>
<li>Les vieux fichiers d'en-tête doivent être
évacués de <code>/usr/include</code> :
<blockquote>
<pre>
<code> mv /usr/include /usr/i486-linuxlibc5/include
</code>
</pre></blockquote>
</li>
<li>Créez un nouveau répertoire d'en-têtes et
activez les liens vers d'autres en-têtes :
<blockquote>
<pre>
<code> mkdir /usr/include
ln -s /usr/src/linux/include/linux /usr/include/linux
ln -s /usr/src/linux/include/asm /usr/include/asm
ln -s /usr/X11R6/include/X11 /usr/include/X11
ln -s /usr/lib/g++-include /usr/include/g++
</code>
</pre></blockquote>
Les liens devront être ajustés au besoin selon votre
distribution. Rien que la Slackware installe les en-têtes g++
dans <code>/usr/local/g++-include</code>, alors que Debian met les
en-têtes dans <code>/usr/include/g++</code>, et fait un lien
de <code>/usr/lib/g++-include</code> vers
<code>/usr/include/g++</code>. Dans d'autres cas, vous voudrez
sûrement déplacer le répertoire
d'en-têtes g++ d'origine à son ancien emplacement
<code>/usr/include</code>.</li>
<li>Remettre des fichiers d'en-têtes et des liens
supplémentaires. Certaines bibliothèques non
standards comme ncurses installent des fichiers dans
<code>/usr/include</code> ou installent un lien vers leur
répertoire d'en-tête dans <code>/usr/include</code>.
Ces fichiers et liens doivent être remis en place pour
pouvoir utiliser les bibliothèques supplémentaires
correctement.</li>
<li>Ajoutez le nouveau répertoire de bibliothèque
(comme <code>/usr/i486-linuxlibc5/lib</code>) <em>en haut</em> de
votre fichier <code>/etc/ld.so.conf</code>. Vous devriez avoir
ld.so-1.8.8 ou mieux installé pour éviter d'avoir des
messages bizarres une fois que glibc sera installée.</li>
<li>Déplacez ou copiez toutes les anciennes
bibliothèques C dans le nouveau répertoire.
<blockquote>
<pre>
<code> mv /usr/lib/libbsd.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libc.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libgmon.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libm.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libmcheck.a /usr/i486-linuxlibc5/lib
mv /usr/lib/libc.so /usr/i486-linuxlibc5/lib
mv /usr/lib/libm.so /usr/i486-linuxlibc5/lib
cp /lib/libm.so.5.* /usr/i486-linuxlibc5/lib
cp /lib/libc.so.5.* /usr/i486-linuxlibc5/lib
</code>
</pre></blockquote>
<code>libm.so.5</code> et <code>libc.so.5</code> doivent être
copiées et non déplacées si <code>/usr</code>
est une partition différente de <code>/</code>, parce
qu'elles sont nécessaires aux programmes utilisés
pour démarrer Linux et doivent être situées sur
la partition racine.</li>
<li>Déplacez les fichiers <code>/usr/lib/*.o</code> dans le
nouveau répertoire.
<blockquote>
<pre>
<code> mv /usr/lib/crt1.o /usr/i486-linuxlibc5/lib
mv /usr/lib/crti.o /usr/i486-linuxlibc5/lib
mv /usr/lib/crtn.o /usr/i486-linuxlibc5/lib
mv /usr/lib/gcrt1.o /usr/i486-linuxlibc5/lib
</code>
</pre></blockquote>
</li>
<li>Mettez à jour votre cache de bibliothèque
après avoir déplacé vos bibliothèques.
<blockquote>
<pre>
<code> ldconfig -v
</code>
</pre></blockquote>
</li>
</ol>
<h2><a name="ss5.3">5.3 Installation à partir du paquetage
binaire</a></h2>
<p><!--
glibc!installation!binaires pré-compilés
--></p>
<p>Si vous installez glibc à partir de binaires
précompilés, vous devez :</p>
<blockquote>
<pre>
<code> cd /
gzip -dc glibc-2.0.bin.i386.tar.gz | tar tvvf -
gzip -dc glibc-crypt-2.0.bin.i386.tar.gz | tar tvvf -
ldconfig -v
</code>
</pre></blockquote>
<p>Si vous avez une architecure ou une version différente,
substituez les noms de fichiers adéquats.</p>
<h2><a name="ss5.4">5.4 Installation à partir des
sources</a></h2>
<p><!--
glibc!installation!à partir des sources
--></p>
<p>Pour installer la bibliothèque à partir des
sources, lancez :</p>
<blockquote>
<pre>
<code> make install
ldconfig -v
</code>
</pre></blockquote>
<h2><a name="ss5.5">5.5 Mise à jour des specs gcc</a></h2>
<p><!--
glibc!installation!fichier de specs gcc, mise à jour
--></p>
<p>L'étape finale de l'installation (à la fois pour
les installations binaires et sources) est de mettre à jour
le fichier <code>specs</code> de gcc pour que vous puissiez lier
vos programmes proprement. Pour déterminer quel fichier
specs est utilisé par gcc, lancez :</p>
<blockquote>
<pre>
<code> % gcc -v
reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
</code>
</pre></blockquote>
<p>Dans ce cas, i486-unknown-linux est le système, et
2.7.2.2 est la version. Vous devez copier
<code>/usr/lib/gcc-lib/<système></code> dans l'ancien
répertoire système :</p>
<blockquote>
<pre>
<code> cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxlibc5
</code>
</pre></blockquote>
<p>Allez dans le répertoire d'origine et dans le
répertoire de version</p>
<blockquote>
<pre>
<code> cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2
</code>
</pre></blockquote>
<p>et éditez le fichier <code>specs</code> que vous y
trouverez. Dans ce fichier, changez <code>/lib/ld-linux.so.1</code>
en <code>/lib/ld-linux.so.2</code>. Vous devrez aussi enlever
toutes les expressions <code>%{...:-lgmon}</code> de ce fichier,
puisque glibc n'utilise pas la bibliothèque gmon pour les
optimisations. Un fichier specs d'exemple se trouve dans la section
<a href="#specs">fichiers specs d'exemple</a>.</p>
<h2><a name="ss5.6">5.6 Test de l'installation</a></h2>
<p><!--
glibc!installation!test
--></p>
<p>Pour tester l'installation, créez le programme suivant
dans un fichier appelé glibc.c :</p>
<blockquote>
<pre>
<code> #include <stdio.h>
main()
{
printf("hello world!\n");
}
</code>
</pre></blockquote>
<p>et compilez le programme.</p>
<blockquote>
<pre>
<code> % gcc glibc.c -o glibc
</code>
</pre></blockquote>
<p>Utilisez ldd pour vérifier que le programme a
été lié avec glibc2, et non avec votre
ancienne libc :</p>
<blockquote>
<pre>
<code> % ldd glibc
libc.so.6 => /lib/libc.so.6 (0x4000e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
</code>
</pre></blockquote>
<p>Si ça compile et que ça génère
"hello world!" quand vous le lancez, l'installation est
réussie.</p>
<h2><a name="s6">6. Compilation avec la libc non
principale</a></h2>
<p><!--
glibc!compilation avec une autre bibliothèque
--></p>
<p>Il y a des fois où vous voudrez utiliser une
bibliothèque différente pour compiler vos programmes.
Cette section explique comment faire, en utilisant les noms de
répertoires et d'installation utilisés dans les
exemples des deux sections précédentes. Souvenez-vous
de changer les noms pour coller à votre configuration.</p>
<h2><a name="ss6.1">6.1 Avertissement concernant l'utilisation de
libcs non principales</a></h2>
<p><!--
glibc!compilation avec une autre bibliothèque!avertissement
--></p>
<p>Avant de compiler un programme utilisé dans le processus
de démarrage, rappelez-vous que si le programme est
lié dynamiquement, et est utilisé avant que les
partitions non-racines soient montées, toutes les
bibliothèques liées doivent être sur la
partition racine. En suivant la procédure d'installation de
la section précédente pour installer glibc comme
bibliothèque C principale, la vieille libc reste dans
<code>/lib</code>, qui sera sur votre partition racine. Ceci veut
dire que tous vos programmes fonctionneront encore lors du
démarrage. Cependant, si <code>/usr</code> est sur une
partition différente et que vous installez glibc comme
bibliothèque de test dans
<code>/usr/i486-linuxglibc2</code>, tous les nouveaux programmes
que vous compilerez avec glibc ne fonctionneront pas tant que la
partition <code>/usr</code> ne sera pas montée.</p>
<h2><a name="ss6.2">6.2 Compilation des programmes avec une glibc
de test</a></h2>
<p><!--
glibc!compilation avec une autre bibliothèque!glibc
--></p>
<p>Pour compiler un programme avec glibc en installation de test,
vous devez mettre à zéro les chemins d'en-tête
pour qu'ils pointent vers les en-têtes glibc. En
spécifiant "-nostdinc", vous annulerez les chemins normaux,
et "-I/usr/i486-linuxglibc2/include" pointera vers les
entêtes de glibc. Vous devrez aussi spécifier les
en-têtes gcc, que l'on trouve dans
<code>/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include</code> (en
supposant que vous ayez installé la bibliothèque de
test dans i486-linuxglibc2 avec gcc version 2.7.2.2).</p>
<p>Pour lier un programme à une glibc de test, vous devez
spécifier la configuration gcc. Vous le faites avec l'option
"-b i486-linuxglibc2".</p>
<p>Pour la plupart des programmes, vous pouvez spécifier ces
nouvelles options en les ajoutant aux options de makefile
<code>$CFLAGS</code> et <code>$LDFLAGS</code> :</p>
<blockquote>
<pre>
<code> CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2
LDFLAGS = -b i486-linuxglibc2
</code>
</pre></blockquote>
<p>Si vous utilisez un script configure, définissez les
variables shell <code>$CFLAGS</code> et <code>$LDFLAGS</code> (en
utilisant env/setenv pour csh/tcsh ou set/export pour sh/bash/etc)
avant de lancer configure. Les makefiles
générés par celui-ci devraient contenir les
variables <code>$CFLAGS</code> et <code>$LDFLAGS</code> correctes.
Tous les scripts configure ne tiendront pas compte des variables,
et par conséquent vous devriez vérifier après
avoir lancé configure et éditer les makefiles
à la main si nécessaire.</p>
<p>Si les programmes que vous compilez n'appellent que gcc (et pas
cpp ou les binutils directement), vous pouvez utiliser le script
suivant pour économiser la spécification des options
à chaque fois :</p>
<blockquote>
<pre>
<code> #!/bin/bash
/usr/bin/gcc -b i486-linuxglibc2 -nostdinc \
-I/usr/i486-linuxglibc2/include \
-I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@"
</code>
</pre></blockquote>
<p>Vous pourrez alors utiliser ce script à la place de "gcc"
pour compiler.</p>
<h2><a name="ss6.3">6.3 Compilation des programmes avec libc 5
quand glibc est la bibliothèque principale</a></h2>
<p><!--
glibc!compilation avec une autre bibliothèque!libc 5
--></p>
<p>Pour compiler un programme avec vos anciennes
bibliothèques quand vous avez installé glibc comme
bibliothèque principale, vous devez mettre à
zéro les chemins d'en-têtes vers les anciennes
en-têtes. En spécifiant "-nostdinc", vous annulerez
les chemins normaux et "-I/usr/i486-linuxlibc5/include" pointera
vers les en-têtes libc 5. Vous devez aussi indiquer
"-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" pour inclure
les en-têtes spécifiques à gcc. Rappelez-vous
d'ajuster ces chemins selon la manière dont vous avez
nommé les nouveaux répertoires et selon votre version
de gcc.</p>
<p>Pour lier un programme à votre ancienne libc, vous devez
spécifier la configuration de gcc. Vous le faites en
utilisant l'option "-b i486-linuxlibc5".</p>
<p>Pour la plupart des programmes, vous pouvez indiquer ces
nouvelles options en les ajoutant aux options de makefile
<code>$CFLAGS</code> et <code>$LDFLAGS</code> :</p>
<blockquote>
<pre>
<code> CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5
LDFLAGS = -b i486-linuxlibc5
</code>
</pre></blockquote>
<p>Si vous utilisez un script configure, définissez les
variables shell <code>$CFLAGS</code> et <code>$LDFLAGS</code> (en
utilisant env/setenv pour csh/tcsh, ou set/export pour sh/bash/etc)
avant de lancer configure. Les makefiles
générés par celui-ci devraient contenir les
variables <code>$CFLAGS</code> et <code>$LDFLAGS</code> corrects.
Tous les scripts configure ne verront pas les variables, et vous
devriez donc vérifier après avoir lancé
configure et éditer les makefiles si nécessaire.</p>
<p>Si les programmes que vous compilez n'appellent que gcc (et pas
cpp ou binutils directement), vous pouvez utiliser le script
suivant pour éviter de devoir indiquer toutes les options
à chaque fois :</p>
<blockquote>
<pre>
<code> #!/bin/bash
/usr/bin/gcc -b i486-linuxlibc5 -nostdinc \
-I/usr/i486-linuxlibc5/include \
-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@"
</code>
</pre></blockquote>
<p>Vous pouvez alors utiliser ce script à la place de "gcc"
pour la compilation.</p>
<h2><a name="s7">7. Compilation des programmes C++</a></h2>
<p><!--
glibc!programmes C++, compilation
--></p>
<p>Libg++ utilise des parties de la bibliothèque
mathématique, elle est donc liée à libm.
Puisque votre bibliothèque libg++ existante aura
été compilée avec votre ancienne
bibliothèque, vous devrez recompiler libg++ avec glibc ou
obtenir une copie binaire. Les dernières sources de libg++,
en même temps qu'un binaire lié à glibc (pour
x86) se trouvent à <a href=
"ftp://ftp.yggdrasil.com/private/hjl/">ftp://ftp.yggdrasil.com/private/hjl/</a>.</p>
<h2><a name="ss7.1">7.1 Installation de libg++ pour une
installation glibc de test</a></h2>
<p><!--
glibc!libg++, installation!comme bibliothèque de test
--></p>
<p>Si vous avez installé glibc comme bibliothèque de
test, vous devez installer les fichiers dans le répertoire
dans lequel vous avez installé glibc (comme
<code>/usr/i486-linuxglibc2</code> pour l'exemple des sections
précédentes). Si vous installez à partir du
paquetage binaire (ce que je recommanderais, puisque je n'ai jamais
eu de chance pour compiler libg++ de cette manière), vous
devez extraire les fichiers dans un répertoire temporaire et
déplacer tous les fichiers <code>usr/lib/</code> dans le
répertoire <code><répertoire
install>/lib/</code>, les fichiers <code>usr/include/</code>
dans le répertoire <code><répertoire
install>/include/</code> (rappelez-vous d'effacer le lien
<code>include/g++</code> avant !), et les fichiers
<code>usr/bin/</code> dans le répertoire
<code><répertoire install>/bin/</code>.</p>
<h2><a name="ss7.2">7.2 Installation de libg++ pour une
installation glibc principale</a></h2>
<p><!--
glibc!libg++, installation!comme bibliothèque primaire
--></p>
<p>Si vous avez installé glibc comme bibliothèque
principale, vous devez d'abord déplacer vos anciens fichiers
libg++ dans l'ancien répertoire libc si vous voulez encore
pouvoir compiler des programmes g++ avec votre ancienne libc. La
meilleure façon de procéder est probablement
d'installer une nouvelle copie de libg++ compilée avec libc
5 comme dans la section précédente, et ensuite
d'installer la version glibc normalement.</p>
<h2><a name="ss7.3">7.3 Compilation de programmes C++ avec la libc
non principale</a></h2>
<p><!--
glibc!programmes C++, compilation!avec une libc non principale
--></p>
<p>Si vous essayez de compiler un programme C++ avec une libc non
principale, vous devrez inclure le répertoire
d'en-têtes g++, qui dans les exemples ci-dessus serait
<code>/usr/i486-linuxglibc2/include/g++</code> pour une
installation glibc de test ou
<code>/usr/i486-linuxlibc5/include/g++</code> pour une installation
glibc principale. On peut faire cela en général en
ajoutant à la variable <code>$CXXFLAGS</code> :</p>
<blockquote>
<pre>
<code> CXXFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc2
</code>
</pre></blockquote>
<h2><a name="s8">8. Indiquer les bogues</a></h2>
<p><!--
glibc!bogues, indication
--></p>
<p>Si vous pensez que la bibliothèque est
vérolée, veuillez d'abord lire la FAQ. Il se peut que
d'autres personnes aient eu ce problème et qu'il y ait une
solution simple. Vous devriez aussi regarder la partie "Outils
recommandés pour l'installation de la bibliothèque C
de GNU" dans le fichier <code>INSTALL</code> puisque certains
bogues proviennent des outils et non de glibc.</p>
<p>Une fois que vous avez trouvé un bug, assurez-vous que
c'en est vraiment un. Une bonne manière de le faire est de
regarder si la bibliothèque C GNU se comporte de la
même manière qu'une autre bibliothèque C. S'il
en est ainsi, vous vous êtes trompé et les
bibliothèques ont raison (mais pas forcément). Dans
le cas contraire, l'une des bibliothèques a probablement
tort.</p>
<p>Ensuite, dirigez-vous vers <a href=
"http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl">http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl</a>,
et parcourez la base de données des bugs. Vérifiez
bien que le problème n'a pas déjà
été indiqué. Vous devriez aussi jeter un coup
d'oeil au fichier <code>BUGS</code> (ditribué avec glibc)
pour prendre connaissance des bugs connus.</p>
<p>Une fois que vous êtes sûr d'avoir trouvé un
bug, essayez de le réduire au plus petit test pratique qui
reproduit le problème. Dans le cas d'une bibliothèque
C, vous ne devrez probablement en être réduit
qu'à un appel de fonction de la bibliothèque, si
possible. Ceci ne devrait pas être trop difficile.</p>
<p>L'étape finale une fois que vous avez un exemple simple
de test est d'indiquer le bug. En indiquant un bug, envoyez votre
exemple de test, les résultats que vous avez obtenus, ce que
vous pensez être le problème (si vous avez
pensé à quelque chose), le type de votre
système, les versions de la bibliothèque C GNU, du
compilateur GNU CC et des GNU binutils que vous utilisez. Ajoutez
aussi les fichiers <code>config.status</code> et
<code>config.mak</code> créés en lançant
<code>configure</code> ; ils seront dans le répertoire qui
était le répertoire courant quand vous avez
lancé <code>configure</code>.</p>
<p>Vous devez envoyer tous les rapports de bug pour la
bibliothèque C GNU en utilisant le script shell
<code>glibcbug</code> livré avec la libc GNU à
<a href="bugs@gnu.org">bugs@gnu.org</a> (l'ancienne adresse
<a href="bugs@gnu.ai.mit.edu">bugs@gnu.ai.mit.edu</a> fonctionne
encore), ou par l'intermédiaire de l'interface Web de GNATS
à <a href=
"http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl">http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl</a>.</p>
<p>Les suggestions et les questions doivent être
envoyées à la liste de distribution à <a href=
"bugs-glibc@prep.ai.mit.edu">bugs-glibc@prep.ai.mit.edu</a>. Si
vous ne lisez pas le groupe de gnews gnu.bug.glibc, vous pouvez
vous abonner à la liste en demandant à <a href=
"bug-glibc-request@prep.ai.mit.edu">bug-glibc-request@prep.ai.mit.edu</a>.</p>
<p>Veuillez s'il vous plait ne pas envoyer de rapport de bug
concernant la bibliothèque C GNU à
<bug-gcc@prep.ai.mit.edu>. Cette liste s'occupe des rapports
de bug de GNU CC. GNU CC et la bibliothèque C GNU sont des
entités distinctes maintenues par des personnes
différentes.</p>
<h2><a name="specs"></a> <a name="s9">9. Fichiers specs
d'exemple</a></h2>
<p><!--
glibc!fichier de specs GCC, exemple
--></p>
<p>Voici ci-inclus un fichier d'exemple <code>specs</code> pour
glibc 2 que gcc utilise pour la compilation et la liaison
dynamique. On devrait le trouver dans le répertoire
<code>/usr/lib/gcc-lib/<nouveau
répertoire>/<version gcc></code>. Si vous utilisez
un système x86, vous pouvez copier exactement cette section
dans le fichier.</p>
<blockquote>
<pre>
<code> *asm:
%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}
*asm_final:
%{pipe:-}
*cpp:
%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
*cc1:
%{profile:-p}
*cc1plus:
*endfile:
%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
*link:
-m elf_i386 %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static}}}
*lib:
%{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}}
*libgcc:
-lgcc
*startfile:
%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
*switches_need_spaces:
*signed_char:
%{funsigned-char:-D__CHAR_UNSIGNED__}
*predefines:
-D__ELF__ -Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386)
*cross_compile:
0
*multilib:
. ;
</code>
</pre></blockquote>
<h2><a name="s10">10. Divers</a></h2>
<p><!--
glibc!divers
--></p>
<h2><a name="ss10.1">10.1 Informations
supplémentaires</a></h2>
<p><!--
glibc!sources d'informations
--></p>
<h3>Pages Web</h3>
<p><!--
glibc!sources d'information!WWW
--></p>
<ul>
<li><a href="http://www.gnu.org/software/libc/libc.html">Page
d'accueil de la bibliothèque C GNU chez FSF</a></li>
<li><a href="http://www.imaxx.net/~thrytis/glibc/">Utilisation de
GNU Libc 2 avec Linux</a></li>
<li><a href="http://huizen.dds.nl/~frodol/glibc/">Installer glibc-2
sur Linux</a></li>
<li><a href=
"http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html">HOWTO
libc5 vers libc6 Debian</a></li>
</ul>
<h3>Groupes de news</h3>
<p><!--
glibc!sources d'informations!groupes de news
--></p>
<ul>
<li><a href=
"news:comp.os.linux.development.system">comp.os.linux.development.system</a></li>
<li><a href=
"news:comp.os.linux.development.apps">comp.os.linux.development.apps</a></li>
<li><a href="news:linux.dev.kernel">linux.dev.kernel</a></li>
<li><a href="news:gnu.bug.glibc">gnu.bugs.glibc</a></li>
</ul>
<h3>Listes de distribution</h3>
<p><!--
glibc!sources d'informations!listes de distribution
--></p>
<dl>
<dt><b>Liste de discussion Glibc 2 Linux.</b></dt>
<dd>
<p>Cette liste est destinée à la discussion entre les
utilisateurs Linux qui ont installé glibc2, la nouvelle
bibliothèque C. Les sujets peuvent comprendre des
problèmes de compatibilité et des questions sur la
compilation de code dans un environnement Linux/glibc. Pour
s'abonner, envoyer un courrier à <a href=
"mailto:Majordomo@ricardo.ecn.wfu.edu">Majordomo@ricardo.ecn.wfu.edu</a>
avec dans le corps "subscribe glibc-linux <votre adresse
email>".</p>
</dd>
</dl>
<h2><a name="ss10.2">10.2 Remerciements</a></h2>
<p>J'ai volé une bonne partie de ces informations sur la
<a href="http://www.gnu.org/software/libc/libc.html">page web de
GNU Libc</a> et de l'annonce de glibc 2 par Ulrich Drepper
<drepper@gnu.ai.mit.edu> et ses commentaires. Andreas Jaeger
<aj@arthur.rhein-neckar.de> a alimenté une partie de
la section sur l'indication des bugs.</p>
<p>Les personnes suivantes ont fourni des informations et un retour
sur ce document :</p>
<ul>
<li>Allex <allex@ms2.accmail.com.tw></li>
<li>Mark Brown <M.A.Brown-4@sms.ed.ac.uk></li>
<li>Ulrich Drepper <drepper@gnu.ai.mit.edu></li>
<li>Scott K. Ellis <ellis@valueweb.net></li>
<li>Aron Griffis <agriffis@coat.com></li>
<li>Andreas Jaeger <aj@arthur.rhein-neckar.de></li>
<li>Frodo Looijaard <frodol@dds.nl></li>
<li>Ryan McGuire <rmcguire@freenet.columbus.oh.us></li>
<li>Shaya Potter <spotter@capaccess.org></li>
<li>Les Schaffer <godzilla@futuris.net></li>
<li>Andy Sewell <puck@pookhill.demon.co.uk></li>
<li>Gary Shea <shea@gtsdesign.com></li>
<li>Stephane <sr@adb.fr></li>
<li>Jan Vandenbos <jan@imaxx.net></li>
</ul>
<p>Les traductions de ce document sont faites par :</p>
<ul>
<li>chinois : Allex <allex@ms2.accmail.com.tw></li>
<li>français : Géraud
Canet<canet@labri.u-bordeaux.fr></li>
<li>japonais : Kazuyuki Okamoto
<ikko-@pacific.rim.or.jp></li>
</ul>
<h2><a name="ss10.3">10.3 Retour d'informations</a></h2>
<p>En plus d'écrire ce HOWTO, maintenir la page <a href=
"http://www.imaxx.net/~thrytis/glibc">glibc 2 pour Linux</a>, et
l'utiliser sur ma machine, je n'ai rien à voir avec le
projet glibc. Je suis loin d'être un expert dans ce domaine,
bien que j'essaie de résoudre les problèmes qu'on
m'envoie par courrier électronique. J'apprécie tout
retour, correction ou suggestion que vous pourriez me faire.
Veuillez les envoyer à <a href=
"mailto:ejg3@cornell.edu">ejg3@cornell.edu</a>.</p>
<h2><a name="ss10.4">10.4 Copyright</a></h2>
<p>Copyright (c) 1997 par Eric Green. Ce document peut être
distribué sous les termes de la licence LDP.</p>
</body>
</html>
|