
                             Glibc 2 HOWTO 媩
                                       
@ Eric Green, ejg3@cornell.edu
Ķ Allex Juang, allex@ms2.accmail.com

   1.5 , 1998~ 2 8
     _________________________________________________________________
   
   o glibc 2 HOWTO e]Ab Linux tΤWw˻PϥβĤG GNU C
   LibraryC
     _________________________________________________________________
   
1. ²

     * 1.1  glibc 2
     * 1.2 o
     * 1.3 o󪺳̷s
       
2. ܧAwˤ覡

3. o禡w

4. w˦եΪ禡w

     * 4.1 sĶPw
     * 4.2 s dynamic loader
     * 4.3 ]w gcc
     * 4.4 sYɳs
     * 4.5 էAw
       
5. w˦Dn禡w

     * 5.1 ѭlXsĶ禡w
     * 5.2 ǳƦw
     * 5.3 ѹwsĶnMw
     * 5.4 ѭlXw
     * 5.5 s gcc specs
     * 5.6 էAw
       
6. ϥΫDDn C 禡wsĶ{

     * 6.1 @ϥΫDDn C 禡wĵi
     * 6.2 δզw˪ glibc sĶ{
     * 6.3  glibc ODn禡wɥ libc 5 sĶ{
       
7. sĶ C++ {

     * 7.1 δժ C 禡ww libg++
     * 7.2 bDn glibc Uw libg++
     * 7.3 ϥΫDDn C 禡wӽsĶ C++ {
       
8. i

9. Specs ɽd

10. 

     * 10.1 i@B
     * 10.2 ^m̦C
     * 10.3 ^X
     * 10.4 Copyright.
     _________________________________________________________________
   
1. ²

1.1  glibc 2

   Glibc 2 O̷s GNU C 禡wC ثeݭקNiHb GNU Hurd
   ALinux i386A m68kA H alpha tΤWA  2.1 N[J
   Linux PowerPCA MIPSA SparcA Sparc 64 P Arm tΪ䴩CӱN[J
   䥦[cΧ@~tΪ䴩C
   
   b Linux WAglibc 2 ODn 6  libcA]NO Linux libc 5 ~
   ̡C Linux libc oiHQHvN libc 5C N 2.0.6 ӬݡAglibc
   w㦳~~C Glibc 2.1  (b[N) N[Jh\A
   òӨhtΤWA@DyϥΡC
   
   Glibc 2 Tӿܩʪ[MG
   
   Crypt
          UFC-crypt [KMC ѩXfҥHnXӡC
          
   LinuxThreads
          Posix 1003.1c "pthread" @C
          
   Locale data
          ]tsyϥ glibc  internationalization \һ locale 
          ɮתơC
          
   jPĳw Cryt P LinuxThreads oӪ[MA pGw˪ܡAi
   |P䥦tΤW禡wyۮeΡC (pAQϥγoӪ[M
   󪺸ܡA Ab configure ɥ[W --disable-sanity-checks 
   )
   
1.2 o

   o[\pb Linux tΤWw glib 2A AιHOǦb
   intel-based Wϥ libc 5 ϥΪ̡C O䥦tΥHΨ䥦P
   w (p glibc 1) ϥΪ̡A unNo󤤥X{ɦWHΨtά[cW
   @ANA Ӥ]ioUC
   
   o HOWTO ̷sib [1]Linux Documentation Project άO
   [2]http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html C
   
1.3 o󪺳̷s

   1.5 P 1.4 tOG
     *  Ed Bailey [J
     * ڪsqllHc}
       
   1.4 P 1.3 tOG
     * NثeAѹʧ令~C
     * soiӦCC
     * s̷s 2.0.6C
       
2. ܧAwˤ覡

   \hؤ覡w glibcAAiHw˦@ӴեΪ禡wA NثeϥΪ
   w@OwA MbsĶ{ɭԥΤPﶵӸեηs禡wC
   γoئwˤ覡HiH glibcC (M glibc s{b
   glibc ᳣Nϥ) t~Aγoؤ覡wˡAAѭlXssĶA 
   S binary distribution iHw˦ժ禡wC o˪w˽аѷ [3]
   w˦եΪ禡wC
   
   o󤤩һt@ؤ覡hON glibc w˦Dn禡wC ҦssĶ
   {N|ϥ glibcA OA]iHbsĶɥΤPﶵӱN{s
   禡wC AiHwˤwgsĶnA]iHۤvsĶ禡wC p
   Q̨ΤƩάOպAﶵA άOQ[JwsĶn䴩 add-on 
   ܡA AݨolXåBۤvsĶAoӦw˪L{аѷ [4]w˦Dn
    C 禡w
   
   Frodo Looijaard yzFt@ glibc wˤ覡C LkON glibc w
   n禡wA M]wesĶ (cross compiler) Өϥ glibcC o
   Ӥ覡_o󤤪զw˭nhAOes glibcC o
   ӤkbL [5]Installing glibc-2 on Linux 󤤻C
   
   pA{bϥΪO Debian 1.3A OQF glibc ӤɯŨ줣íw
   A  [6]Debian libc5 to libc6 Mini-HOWTO |iDApϥ Debian 
   package ӤɯšC
   
   pAn glibc 2 w˨@ntΤWA ]\AϥδժwˡA
   ObƥΨtΤWոլݡC YϨSΡAYǵ{bsĶeMݭnYǭק
   A ]bYǨ禡쫬PAWܡC
   
3. o禡w

   Glibc 2 ]t glibc package HμƭӪ[MG LinuxThreadsB Locale P
   CryptA lXb
     * [7]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz
     * [8]ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz
     * [9]ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz
     * [10]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz
       
   Aݭnj 150MB ϺЪŶӧ@sĶPwˡA ֤ߨ禡w򥻦w
   jn 50MBC
   
   2.0.6 èS binary  packageA 2.0.4  binary package u i386 
   m68k A  2.0.1 for alpha hiHbHUaG
     * Intel x86:
          + [11]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz
          + [12]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.
            tar.gz
     * Alpha:
          + [13]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux
            .tar.gz
          + [14]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha
            -linux.tar.gz
     * m68k:
          + [15]ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.
            tar.gz
          + [16]ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linu
            x.bin.tar.gz
       
   ѩ cypt oӪ[M󦳥XfADϥΪ̽Ш
   [17]ftp://ftp.ifi.uio.no/pub/gnu oC
   
   pGAΪO RedHat distributionA AiHq
   [18]ftp://ftp.redhat.com/pub/redhat/ o glibc2  rpmC b RedHat
   distribution 5.0 A glibc 2 ODn C 禡wC
   
   pGAΪO Debian distributionAAiHq
   [19]ftp://ftp.debian.org/debian/dists/unstable/main/ o glibc2 
   packageCɦWO libc6C Glibc 2 ثeO Debian ժ packageA 
    Debian 2.0 XӤN|ODn C 禡wC
   
4. w˦եΪ禡w

   o@`eOpN glibc 2 w˦եΪ禡wC ҦsĶ{
   sAثe禡wA DAFYB~ѼƤ~|ss禡wC
   ѩ|QsĶYɮפAAݭnѭlXӦw˳o禡wC
   
4.1 sĶPw

  ݨD
  
     *  150 MB ϺЪŶ
     * GNU make 3.75
     * gcc >= 2.7.2 (̦nO 2.7.2.1)
     * binutils 2.8.1 (pO alpha Aٻݭn snapshot)
     * bash 2.0
     * autoconf 2.12 (pAʤF configure.in)
     * texinfo 3.11
       
   b@xw˦ 64MB O i586@133 WA sĶ㪺禡w (]A[
   M) jn 3 pɡC Ӧb i686@200 h@ӥbpɡC
   
  Ѷ}lX
  
   Aݥ archive XlXCp~sĶA̦n覡pUG
   
 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

   o|N linuxthreadsB crypt P localedata ؿ glibc-2.0.6 ؿ
   UA p configure ~iHo add-onsC
   
  ]wպA
  
   b glibc-2.0.6 ؿUAإߤ@ӷsؿ compileAåB cd 
   compile UA Ҧu@|boӥؿAo|²ƫ򪺲Mu@C
   (oi̦Gå 'make clean' @oܦn)
   
 mkdir compile
 cd compile

    ../configureC nϥΤ[MAAݥ --enable-add-ons wA 
   p --enable-add-ons=linuxthreads,crypt,localedataC
   
   A]ݫwnw˪ؿA/usr/i486-linuxglibc2 OӤܡA o˪
   configure ROpUG
   
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486
-linuxglibc2

  sĶPw
  
   nsĶPҡA
   
 make
 make check

   p 'make check' \FAw˨禡wG
   
 make install

4.2 s dynamic loader

    1. إ߳sA q ld.so  /lib/ld-linux.so.2G
       
 ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2

       @ɮ׳sɡAoӨ禡wOߤ@@ӦmTwC íwX{
       ɭԡA b /lib ϥγs]|ϱoN glibc ɯŬDn禡wɧ󬰻
       PC
    2. ק /etc/ld.so.confC AݭnW[s禡wҦb|ɮת̫A
       o|ӬO <prefix>/libC pΥHWܴNӬO
       /usr/i486-linuxglibc2/libC bAקF /etc/ld.so.conf AG
       
 ldconfig -v

4.3 ]w gcc

   w˪̫@BOs /usr/lib/gcc-lib H gcc Dpϥηs禡wC
   AAݭnƻsثeպAAnDثeպAAϥ gcc  -v ﶵG
   
 % gcc -v
 Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2

   o̡Ai486-unknown-linux OثeҥΪtΡA2.7.2.2 hOثeC A
   nN /usr/lib/gcc-lib/<t> ƻssըtΥؿG
   
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxglibc2

   AstΥؿHΪؿUG
   
 cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2

   קؿU specsCboɮפA N /lib/ld-linux.so.1 
   /lib/ld-linux.so.2A A]ݭnhɮפҦ %{...:-lgmon} ܦA
   ] glibc ϥ gmon 禡wӰ profileC AiHb [20]Specs ɽdҧ
   @ӽdҡC
   
4.4 sYɳs

   AݭnbA include ؿUإ߳s䥦 include ؿG
   
 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

   ]\A䥦禡wAҦp ncurseA ӳoǨ禡w|ݭn̦ۤvY
   ɡA Aӱq /usr/include ƻsγsoɮסC (Ǩ禡wݭns
   glibc2  compileAboرΤUA unsĶåBw˨
   /usr/i486-linuxglibc2)
   
4.5 էAw

   nզwˬO_\Aإߤ@ɮ glibc.c pUG
   
 #include <stdio.h>

 main()
 {
     printf("hello world!\n");
 }

    "-b <w˥ؿ> -nostdinc -I<w˥ؿ>/include -I/usr/lib/gcc-lib/<s
   tΥؿ>/<gcc >/include" ﶵsĶG
   
 % 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

   ϥ ldd Tw{O glibc2 sAӫD¦ libcG
   
 % ldd glibc
 libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2.0.5.so (0x4000d000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

   pGqLsĶAs]TwA åBɤ] "hello world!" XA
   w˴N\FC
   
5. w˦Dn禡w

   o@`eON glibc2 w˦ADn C 禡wC AsĶs{
   N|so@Ө禡wA DAΤFSsĶﶵӳs䥦
   C
   
   pAO RedHat  Debian åBwU rpm  deb ɡA аѾ\
   RedHat  Debian w˻AAiHLo@`C
   
5.1 ѭlXsĶ禡w

   o@`pѭlXsĶ glibc 2 P[MC pGAQn̨ܳΤƻP
   պAﶵΨϥB~MAANsĶ禡wC
   
  ݨD
  
     *  150 MB ϺЪŶ
     * GNU make 3.75
     * gcc >= 2.7.2 (̦nO 2.7.2.1)
     * binutils 2.8.1 (pO alpha Aݭn snapshot)
     * bash 2.0
     * autoconf 2.12 (pAʤF configure.in)
     * texinfo 3.11
       
   b@w˦ 64MB O骺 i586@133 WA sĶ㪺禡wP[Mj
   ݭnTӤpɡC Ӧb i686@200 Whݭn@ӥbpɡC
   
  Ѷ}lX
  
   Aݭnq archive ѥXlX~sĶA ̦n覡OG
   
 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

   oN| linuxthreadsBcrypt P localedata ؿ glibc-2.0.6 ؿ
   UA p configure ~oǪ[MC
   
  ]wպA
  
   b glibc-2.0.6 ؿUAإߤ@ӷsؿ compileA åB cd 
   compile UAҤ]u@|boӥؿA o|²ƫ򪺲Mu@C
   (oi̦Gå 'make clean' @oܦn)
   
 mkdir compile
 cd compile

    ../configureC nϥΪ[MAݥ --enable-add-ons ӫwA 
   p --enable-add-ons=linuxthreads,crypt,localedataC ]\A]|Qnw
   w˪ؿAnŦX linux зǬ[cA w --prefix=/usrC (b linux
   tΤW prefix Q] /usrA configure Dnվ䥦|A nN
   libc.so HΨ䥦n禡w /lib) 㪺 configure ROpUG
   
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr

  sĶ
  
   nsĶPҡA G
   
 make
 make check

5.2 ǳƦw

   L׬OѭlXsĶάOwsĶnAA{bݲʬYɮרӪﱵs
   禡wC ssĶ{|Qs glibcAO¦RAs{M
   ʾa libc 5A ҥHAuOл\¦C
   
    1. إߤ@ӷsؿөmɮסG
       
 mkdir -p /usr/i486-linuxlibc5/lib

    2. ªYɥݱq /usr/include }G
       
 mv /usr/include /usr/i486-linuxlibc5/include

    3. إߤ@ӷs include ؿAåB]w䥦 include ؿsG
       
 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++

       oǳsnAtΦӵy@վC ̤֦b Slackware Ag++ Y
       צb /usr/local/g++-includeA  Debian ob /usr/include/g++A
       åBN /usr/lib/g++-include s /usr/include/g++C b̪
       AA]\|QnNl g++ include ؿ^ /usr/includeC
    4. ^sҦB~YɻPsC YǫDзǪ禡w|Nɮש
       /usr/includeA άOb /usr/include m@s쥦̪ include ؿ
       UC oɮ׻Ps^sAp~iHTϥγoB~禡wC
    5. NAs禡w| (Ҧp /usr/i486-linuxlibc5/lib) [J
       /etc/ld.so.conf ݡC A̦nn ld.so 1.8.8 άOsA H
       קKbw˧ glibc X{@ǩ_ǪTC
    6. hνƻsҦ¨禡wsؿC
       
 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

       pA /usr P / ObP partition WA  libm.so.5 P
       libc.so.5 ӥνƻsDhA ]@ǥΨӱҰ linux {|ݭn
       oӨ禡wA ]nb root partitionC
    7. N /usr/lib/*.o sؿUC
       
 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

    8. bA禡wʫA s library cacheC
       
 ldconfig -v

5.3 ѹwsĶnMw

   pGAOѤ@wwsĶn glibc wˡA AG
   
 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

   pGAΪOPtά[cάOAиmAɦWC
   
5.4 ѭlXw

   nѭlXwˡA G
   
 make install
 ldconfig -v

5.5 s gcc specs

   w˪̫@B (ާAOѹwsĶnMάOѭlXw) Os gcc
    spec ɡA AiHTsA{C nD gcc ҥΪO@
   spec ɡA pUJG
   
 % gcc -v
 reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2

   bo̡AtάO i486-unknown-linuxA ӪhO 2.7.2.2C AN
   /usr/lib/gcc-lib/<t> ƻsªtΥؿUG
   
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxlibc5

   ؿPؿUG
   
 cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2

   íקbP@ؿU specsC Noɮפ /lib/ld-linux.so.1 令
   /lib/ld-linux.so.2A åBnNҦ %{...:-lgmon} ܦRA ]
   glibc ϥ gmon 禡wӰ profilingC AiHb [21]Specs ɽd 
   @ specs ɪdҡC
   
5.6 էAw

   nզwˬO_TA Ыإ glibc.c pUG
   
 #include <stdio.h>

 main()
 {
     printf("hello world!\n");
 }

   åB compile oӵ{G
   
 % gcc glibc.c -o glibc

   ϥ ldd Ӭdҳoӵ{Os glibc2 ӫDA libcG
   
 % ldd glibc
 libc.so.6 => /lib/libc.so.6 (0x4000e000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

   poӵ{iHqL compileAåBbᲣ "hello world!" XA
   ܤwgw˦\C
   
6. ϥΫDDn C 禡wsĶ{

   ǮɭԧA|QnϥΤP禡wӽsĶA{Ao@`|pFo
   ӥتC ڷ|ϥΦbe`ҨϥΪؿPw˦W١AOonܳoǦW٥H
   ŦXA]wC
   
6.1 @ϥΫDDn C 禡wĵi

   bA}lsĶ|b}ɥΨ쪺{eA p{OʺAsAåBOb
   non-root partition Q mount eϥΪܡA ҦsΪ禡wb
   root partition WC bew˵{Ǹ̡Aڭ̱N glibc w˦Dn禡w
   A ª禡wMOdb /libA /lib |b root partition WA ]NO
   AҦb}ɷ|Ψ쪺{ॿ`u@C MӡAYA /usr ObP
   partition WA B glibc եΪ禡wAw˦b
   /usr/i486-linuxglibc2A D /usr wgQ mountA_hҦA glibc s
   Ķ{NϥΡC
   
6.2 δզw˪ glibc sĶ{

   nδզw˪ glibc sĶ{A AnN include |] glibc 
   include |C w "-nostdinc" |` include |A 
   "-I/usr/i486-linuxglibc2/include" h| glibc  include ؿA A]
   nw gcc з include ؿA q`O
   /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/includeC (o̰]Aw˴
   禡wb i486-linuxglibc2A  gcc O 2.7.2.2)
   
   nδզw˪ glibc ӳsAA gcc ]wA oO "-b
   i486-linuxglibc2" oﶵӹFC
   
   j{A AiH²檺N[J makefile  $CFLAGS P $LDFLAGS
   ﶵG
   
 CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-lin
uxglibc2/2.7.2.2/include -b i486-linuxglibc2
 LDFLAGS = -b i486-linuxglibc2

   pAϥ configure o scriptAb configure eA wq shell 
    $CFLAGS P $LDFLAGS (b csh/tcsh U env/setenv b sh/bash/䥦U
    set/export)C o˲ͪ makefile ӷ|]tT $CFLAGS P
   $LDFLAGSC LëDҦ configure scrpt |hooܼơA ҥHb
   槹 configure AA٬Onˬd@U makefileA pݭnܡAʭק
   C
   
   pAҭnsĶ{uIs gccA(ӤIs cpp  binutils) AiH
   ΥHU scriptA٥hCwҦﶵ·СG
   
 #!/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 "$@"

   sĶɧAiHϥγo script ӤO gccC
   
6.3  glibc ODn禡wɥ libc 5 sĶ{

   AwgN glibc w˦Dn禡wASQª禡wӽsĶ{
   ԡA AN include |]ª|C w "-nostdinc" N|Ϲw]
   |LġA  "-I/usr/i486-linuxlibc5/include" |N include |
   ¨禡w include |A A]nw
   "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" HtJ gcc һݪ
   include ɡC `NnAsؿP gcc ӽվoǸ|C
   
   nª libc ӰsAAw gcc ҥΪ[cC oO "-b
   i486-linuxlibc5" oӿﶵҫwC
   
   j{AAiH²檺Noǿﶵ[J makefile ̪ $CFLAGS P
   $LDFLAGS ﶵ̡G
   
 CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linu
xlibc5/2.7.2.2/include -b i486-linuxlibc5
 LDFLAGS = -b i486-linuxlibc5

   pAϥ configure o scriptA b configure eA wq shell
   ܼ $CFLAGS P $LDFLAGS (b csh/tcsh U env/setenv b sh/bash/Ψ䥦
   U set/export)C o˲ͪ makefile ӷ|]tT $CFLAGS P
   $LDFLAGSC LëDҦ configure scrpt |hooܼơA ҥHb
   槹 configure AA٬On²ˬd@U makefileA pݭnܡAʭ
   復C
   
   pAҭnsĶ{uIs gccA(ӤIs cpp  binutils) AiH
   ΥHU scriptA٥hCwҦﶵ·СG
   
 #!/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 "$@"

   sĶɧAiHϥγo script ӤO gccC
   
7. sĶ C++ {

   ] libg++ ϥΤFƾǨ禡wA]NO|s libmC ѩAثe
    libg++ Oª禡wҫإߪA ҥHAs glibc  compile
   libg++ άOo@wsĶnC ̷s libg++ source P
   glibc ҳswsĶiHb
   [22]ftp://ftp.yggdrasil.com/private/hjl/ C
   
7.1 δժ C 禡ww libg++

   pAwgN glibc w˦եΪ禡wAAw˨ glibc Ҧw˪
   ؿU (Ҧpѫe@`ҥܪ /usr/i486-linuxglibc2)C pAnw˹ws
   Ķn (o]Oګĳwˤ覡A]ڤ@γoؤ覡\as
   Ķ libg++)A ANɮ׸ѨȦsؿUA N usr/lib/ UҦɮ׷h
    <install directory>/lib/A ñN usr/include/ UҦɮ׷h
   <install directory>/include/ UA (OoR include/g++ oӳsI)
   AN usr/bin/ Uɮ׷h <install directory>/bin/C
   
7.2 bDn glibc Uw libg++

   YAwgN glibc w˦Dn禡wApٷQnª libc ӽsĶ g++
   {A ANª libg++ ɮײª libc ؿUC ]\²
   檺覡NOpe@` libc 5 Ӧwˤ@sA MA`w
   glibc C
   
7.3 ϥΫDDn C 禡wӽsĶ C++ {

   pAQΫDDn C 禡wӽsĶ C++ {A An[J g++ 
   include ؿC bWҤlA եΪ glibc O
   /usr/i486-linuxglibc2/include/g++A ӹDn glibc hO
   /usr/i486-linuxlibc5/include/g++A oq`iHѲK[ $CXXFLAGS o
   ܼƨӧG
   
 CXXFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-l
inuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglib
c2

8. i

   pAHo禡wAХ\Ū FAQA]\wgHJLoӰDA åB
   ]wgF²檺ѨMkC t~AA]Ӭd INSTALL ɤ
   "Recommended Tools to Install the GNU C Library" @`A ]ǿ~
   b glibc ӬOboǤuC
   
   ]AFΡAХTwTOΡC @ӧP_nkOݬ glibc
   欰O_P䥦 C 禡wۦPC pۦPܡA]\AOAӨ禡
   wOTC (]@wp) pۦPܡA֩w̤@ӬO
   C
   
   ۡAШ [23]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.plA åB
   dݯθƮwATwoӰD|HXC A]Ӭݬ BUGS (I
   libc ) ҦCXثewQo{ΡC
   
   @ATwF@sΡAиյ۱NYp̤p test caseC N C
   禡wӨAAuݭnNYpW@Ө禡Is(piH)C oӤ
   OӧxơC
   
   ̫@ӨBJONA test case XγiC neXγiAХ]tA
    test caseBAұo쪺GBAҴݪGB A{i઺]b (u
   nAQL])BAtOBAҨϥΪ GNU C 禡wB GNU CC
   sĶBGNU binutils Ct~A ЪW configure ɲͪ
   config.status P config.makeA oɮ׷|bA configure ɭԪ
   UC
   
   ҦγiӨϥ glibcbug o GNU libc Ҫ shell script e
    [24]bugs@gnu.org (ª} [25]bugs@gnu.ai.mit.edu ]MiHϥ)C
   άO GNATS WQ
   [26]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl oӤӰC
   
   AĳPDӰe [27]bugs-glibc@prep.ai.mit.edu oӶlCC 
   pAS\ŪsDs gnu.bug.glibcA AiHnD
   [28]bug-glibc-request@prep.ai.mit.edu [JoӦCC
   
   ФnN GNU C 禡wγie <bug-gcc@prep.ai.mit.edu>A oO
   F GNU CC ӳ]ߪA GNU CC P GNU C 禡wOѤPH̪Һ@C
   
9. Specs ɽd

   o̬O@ specs dҡCoN gcc  glibc2 ӽsĶPsC Ӧ
   /usr/lib/gcc-lib/<stΥؿ>/<gcc >. pAΪO x86 tΡAA
   ]\iHNo@qƻsɮ׸̥hC
   
 *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-linu
x.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:%{p
rofile: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) -Am
achine(i386)

 *cross_compile:
 0

 *multilib:
 . ;

10. 

10.1 i@B

  
  
     * [29]FSF's GNU C Library Home Page
     * [30]Using GNU Libc 2 with Linux
     * [31]Installing glibc-2 on Linux.
     * [32]Debian libc5 to libc6 Mini-HOWTO.
       
  sDs
  
     * [33]comp.os.linux.development.system
     * [34]comp.os.linux.development.apps
     * [35]linux.dev.kernel
     * [36]gnu.bugs.glibc
       
  lC
  
   Glibc 2 Linux QצC
          oӶlCOFw˦ glibcA]NOs GNU C 禡wA
          Ϊ̰QץΪC ĳD]AۮeʪDAHΦb linux/glibc ҤU{
          sĶDC nq\oӶlCA бH@ʫH
          [37]Majordomo@ricardo.ecn.wfu.eduA He "subscribe
          glibc-linux <your email address>"C
          
10.2 ^m̦C

   jTO [38]GNU Libc web page H Ulrich Drepper 
   <drepper@gnu.ai.mit.edu> glibc 2 announcement ҰӪA Andreas
   Jaeger <aj@arthur.rhein-neckar.de> hѤFγiC
   
   HUU쳣糧󴣨ѬTHηNG
     * Allex Juang<allex@ms2.accmail.com.tw>
     * Mark Brown <M.A.Brown-4@sms.ed.ac.uk>
     * Ulrich Drepper <drepper@gnu.ai.mit.edu>
     * Scott K. Ellis <ellis@valueweb.net>
     * Aron Griffis <agriffis@coat.com>
     * Andreas Jaeger <aj@arthur.rhein-neckar.de>
     * Frodo Looijaard <frodol@dds.nl>
     * Ryan McGuire <rmcguire@freenet.columbus.oh.us>
     * Shaya Potter <spotter@capaccess.org>
     * Les Schaffer <godzilla@futuris.net>
     * Andy Sewell <puck@pookhill.demon.co.uk>
     * Gary Shea <shea@gtsdesign.com>
     * Stephane <sr@adb.fr>
     * Jan Vandenbos <jan@imaxx.net>
       
   o½ĶOѥHUƤHҧG
     * G Allex Juang<allex@ms2.accmail.com.tw>
     * kG Olivier Tharan <tharan@int-evry.fr>
     * G Kazuyuki Okamoto <ikko-@pacific.rim.or.jp>
       
10.3 ^X

   Fgo HOWTOB@ [39]glibc 2 for Linux oBåBbڪW
   ϥΤ~AڻP glibc pLA ڤ]Fѳo譱ĳDA|i
   HڪDUC ڤ]wAX󪺦^XBץBάOĳA
   бṈH [40]ejg3@cornell.eduC
   
10.4 Copyright.

   󪺪vݩ Eric GreenAoiHb LDP ӤUGC

References

   1. http://sunsite.unc.edu/LDP
   2. http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html
   3. file://localhost/tmp/zh-sgmltools.11151/Glibc2-HOWTO.txt.html#test-install
   4. file://localhost/tmp/zh-sgmltools.11151/Glibc2-HOWTO.txt.html#primary-install
   5. http://huizen.dds.nl/~frodol/glibc/
   6. http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html
   7. ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz
   8. ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz
   9. ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz
  10. ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.6.tar.gz
  11. ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz
  12. ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz
  13. ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-linux.tar.gz
  14. ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-linux.tar.gz
  15. ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz
  16. ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-linux.bin.tar.gz
  17. ftp://ftp.ifi.uio.no/pub/gnu
  18. ftp://ftp.redhat.com/pub/redhat/
  19. ftp://ftp.debian.org/debian/dists/unstable/main/
  20. file://localhost/tmp/zh-sgmltools.11151/Glibc2-HOWTO.txt.html#specs
  21. file://localhost/tmp/zh-sgmltools.11151/Glibc2-HOWTO.txt.html#specs
  22. ftp://ftp.yggdrasil.com/private/hjl/
  23. http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl
  24. mailto:bugs@gnu.org
  25. mailto:bugs@gnu.ai.mit.edu
  26. http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl
  27. mailto:bugs-glibc@prep.ai.mit.edu
  28. mailto:bug-glibc-request@prep.ai.mit.edu
  29. http://www.gnu.org/software/libc/libc.html
  30. http://www.imaxx.net/~thrytis/glibc/
  31. http://huizen.dds.nl/~frodol/glibc/
  32. http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html
  33. news:comp.os.linux.development.system
  34. news:comp.os.linux.development.apps
  35. news:linux.dev.kernel
  36. news:gnu.bug.glibc
  37. mailto:Majordomo@ricardo.ecn.wfu.edu
  38. http://www.gnu.org/software/libc/libc.html
  39. http://www.imaxx.net/~thrytis/glibc
  40. mailto:ejg3@cornell.edu
