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

   1.5 , 1998 2 8
     _________________________________________________________________
   
    glibc 2 HOWTO ݰ Linux ϵͳϰװʹõڶ GNU C
   Library
     _________________________________________________________________
   
1. 

     * 1.1  glibc 2
     * 1.2 ļ
     * 1.3 ļ¸ı
       
2. ѡİװʽ

3. ȡúʽ

4. װɲõĺʽ

     * 4.1 밲װ
     * 4.2  dynamic loader
     * 4.3 趨 gcc
     * 4.4 ±ͷ
     * 4.5 İװ
       
5. װҪʽ

     * 5.1 ԭʼ뺯ʽ
     * 5.2 ׼װ
     * 5.3 Ԥȱõ׼װ
     * 5.4 ԭʼ밲װ
     * 5.5  gcc specs
     * 5.6 İװ
       
6. ʹ÷Ҫ C ʽʽ

     * 6.1 һʹ÷Ҫ C ʽľ
     * 6.2 ò԰װ glibc ʽ
     * 6.3  glibc Ҫʽʱ libc 5 ʽ
       
7.  C++ ʽ

     * 7.1 òԵ C ʽⰲװ libg++
     * 7.2 Ҫ glibc °װ libg++
     * 7.3 ʹ÷Ҫ C ʽ C++ ʽ
       
8. 

9. Specs 

10. 

     * 10.1 һ
     * 10.2 б
     * 10.3 
     * 10.4 Copyright.
     _________________________________________________________________
   
1. 

1.1  glibc 2

   Glibc 2 ° GNU C ʽ⡣ Ŀǰ޸ľͿ GNU Hurd
   Linux i386 m68k Լ alpha ϵͳִУ  2.1 н
   Linux PowerPC MIPS Sparc Sparc 64  Arm ϵͳ֧Ԯδ
   ܹҵϵͳ֧Ԯ
   
    Linux ϣglibc 2 Ҫ汾Ϊ 6  libcҲ Linux libc 5 
   ߡ Linux libc ķչԱԴȡ libc 5  2.0.6 glibc
   ѾгƷƷʡ Glibc 2.1  (ڲõĽ) Ĺܣ
   ֲϵͳϣ㹻ʹá
   
   Glibc 2 ѡԵĸ׼
   
   Crypt
          UFC-crypt ׼ 춳Ҫ
          
   LinuxThreads
          Posix 1003.1c "pthread" ʵ
          
   Locale data
          ʹ glibc  internationalization  locale 
          ϡ
          
   ǿҽ鰲װ Cryt  LinuxThreads ׼ װĻп
   ܻϵͳϵĺʽɲݵΡ (㲻ʹ
   Ļ ִ configure ʱ --disable-sanity-checks ѡ
   )
   
1.2 ļ

   ļ Linux ϵͳϰװ glib 2 öЩ
   intel-based ʹ libc 5 ʹߡ ǶϵͳԼͬ
   ʽ ( glibc 1) ʹߣ ֻҪļгֵĵԼϵͳܹ
   ʵĴ ӦҲɵõЩ
   
    HOWTO °汾Ŀ [1]Linux Documentation Project 
   [2]http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html ҵ
   
1.3 ļ¸ı

   1.5  1.4 Ĳ
     *  Ed Bailey 
     * ҵµʼλַ
       
   1.4  1.3 Ĳ
     * Ŀǰ״̬ʵԸĳɳƷ
     * ·չеֲб
     * °浽 2.0.6
       
2. ѡİװʽ

   ַʽװ glibc԰װһõĺʽ⣬ Ŀǰʹõĺ
   ʽ⵱ڶģ Ȼڱʽʱòͬѡµĺʽ⡣
   ְװʽ׵Ƴ glibc (Ȼ glibc ĳʽƳ
   glibc ᶼʹ) ⣬ַʽװԭʼ±룬 
   û binary distribution ԰װɲԵĺʽ⡣ İװ [3]
   װɲõĺʽ⡣
   
   ļ˵һַʽǽ glibc װҪʽ⡣ ±
   ʽʹ glibc Ҳڱʱòͬѡʽᵽ
   ĺʽ⡣ ֱӰװѾõİ汾ҲԼ뺯ʽ⡣ 
   ѻ̬ѡ ѱõİ汾δ֧Ԯ add-on 
    ȡԭʼ벢Լ룬װĹ [4]װҪ
    C ʽ
   
   Frodo Looijaard һ glibc İװʽ ķǽ glibc װ
   ɴҪĺʽ⣬ Ȼ趨 (cross compiler) ʹ glibc 
   ʽļеĲ԰װҪӵĶ࣬ǱȽᵽ glibc 
    [5]Installing glibc-2 on Linux ļ˵
   
   ʹõ Debian 1.3 ǲΪ glibc ȶİ汾
     [6]Debian libc5 to libc6 Mini-HOWTO ʹ Debian 
   package 
   
   Ҫ glibc 2 װһҪϵͳϣ ҲӦʹòԵİװ
   ڱϵͳԿ ʹûгĳЩʽڱ֮ǰȻҪĳЩ޸
    ԭĳЩʽԭ̬ϵĸı䡣
   
3. ȡúʽ

   Glibc 2  glibc package Լ׼ LinuxThreads Locale 
   Crypt ԭʼ
     * [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
       
   ҪԼ 150MB Ĵŵռȫı밲װ ĺʽĻװ
   ԼҪ 50MB
   
   2.0.6 û binary  package 2.0.4  binary package ֻ i386 
   m68k İ汾  2.0.1 for alpha µطҵ
     * 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 ׼гƣʹ뵽
   [17]ftp://ftp.ifi.uio.no/pub/gnu ȡá
   
   õ RedHat distribution Դ
   [18]ftp://ftp.redhat.com/pub/redhat/ ȡ glibc2  rpm  RedHat
   distribution 5.0 У glibc 2 Ҫ C ʽ⡣
   
   õ Debian distributionԴ
   [19]ftp://ftp.debian.org/debian/dists/unstable/main/ ȡ glibc2 
   package libc6 Glibc 2 Ŀǰ Debian ԰Ļ package 
    Debian 2.0 ֮ὫҪ C ʽ⡣
   
4. װɲõĺʽ

   һڵǹν glibc 2 װɲõĺʽ⡣ бĳʽ
   ᵽĿǰĺʽ⣬ ĳЩĲŻᵽµĺʽ⡣
   ·뵽ĳЩУҪԭʼװ⺯ʽ⡣
   
4.1 밲װ

  
  
     * Լ 150 MB Ĵŵռ
     * GNU make 3.75
     * gcc >= 2.7.2 ( 2.7.2.1)
     * binutils 2.8.1 ( alpha 㻹Ҫ snapshot)
     * bash 2.0
     * autoconf 2.12 ( configure.in)
     * texinfo 3.11
       
   һ̨װ 64MB  i586@133 Ļϣ ĺʽ (
   ׼) ԼҪ 3 Сʱ  i686@200 ԼһСʱ
   
  ⿪ԭʼ
  
    archive ȡԭʼ롣˲ܱõķʽ£
   
 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

   Ὣ linuxthreads crypt  localedata Ŀ¼ glibc-2.0.6 Ŀ¼
   £  configure ſҵЩ add-ons
   
  趨̬
  
    glibc-2.0.6 Ŀ¼£һµĿ¼ compile cd 
   compile £ еĹĿ¼ɣ
   (չƺδ 'make clean' úܺ)
   
 mkdir compile
 cd compile

   ִ ../configure Ҫʹø׼ --enable-add-ons ָ 
   ˵ --enable-add-ons=linuxthreads,crypt,localedata
   
   ҲָҪװĿ¼/usr/i486-linuxglibc2 Ǹѡ 
   configure £
   
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486
-linuxglibc2

  밲װ
  
   Ҫִ֤
   
 make
 make check

    'make check' ɹˣװʽ⣺
   
 make install

4.2  dynamic loader

    1. ᣬ  ld.so  /lib/ld-linux.so.2
       
 ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2

       һʱʽΨһһλù̶ġ ȶİ汾
       ʱ  /lib ʹҲʹý glibc ΪҪʽʱΪ
       ɡ
    2. ޸ /etc/ld.so.conf Ҫµĺʽڵ·ᣬ
       ·Ӧ <prefix>/lib ϵѡӦ
       /usr/i486-linuxglibc2/lib ޸ /etc/ld.so.conf ֮ᣬִУ
       
 ldconfig -v

4.3 趨 gcc

   װһǸ /usr/lib/gcc-lib ʹ gcc ֪ʹµĺʽ⡣
   ȣҪĿǰ̬Ҫ֪Ŀǰ̬ʹ gcc  -v ѡ
   
 % gcc -v
 Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2

   i486-unknown-linux Ŀǰõϵͳ2.7.2.2 Ŀǰ汾 
   Ҫ /usr/lib/gcc-lib/<ϵͳ> ƵµĲϵͳĿ¼
   
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxglibc2

   ϵͳĿ¼Լ汾Ŀ¼£
   
 cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2

   ޸Ŀ¼µ specs⵵У  /lib/ld-linux.so.1 
   /lib/ld-linux.so.2 ҲҪȥе %{...:-lgmon} ʾʽ
   Ϊ glibc ʹ gmon ʽ profile  [20]Specs 
   һ
   
4.4 ±ͷ

   Ҫ include Ŀ¼½ᵽ include Ŀ¼
   
 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

   Ҳĺʽ⣬˵ ncurse ЩʽҪԼıͷ
    Ӧô /usr/include ƻЩ (ЩʽҪ
   glibc2  compile£ ֻҪ벢Ұװ
   /usr/i486-linuxglibc2)
   
4.5 İװ

   Ҫ԰װǷɹһ glibc.c £
   
 #include <stdio.h>

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

    "-b <װĿ¼> -nostdinc -I<װĿ¼>/include -I/usr/lib/gcc-lib/<
   ϵͳĿ¼>/<gcc 汾>/include" ѡ룺
   
 % 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 ȷʽ glibc2 ᣬǾе libc
   
 % 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)

   ͨ룬Ҳȷ ִʱҲ "hello world!" 
   װͳɹˡ
   
5. װҪʽ

   һڵǹ춽 glibc2 װҪ C ʽ⡣ κ³
   ʽᵽһʽ⣬ ıѡᵽİ汾
   
   
    RedHat  Debian ص rpm  deb  
   RedHat  Debian İװ˵ֱһڡ
   
5.1 ԭʼ뺯ʽ

   һڽԭʼ glibc 2 븽׼ Ҫıѻ
   ̬ѡʹö׼ͱ뺯ʽ⡣
   
  
  
     * Լ 150 MB Ĵŵռ
     * GNU make 3.75
     * gcc >= 2.7.2 ( 2.7.2.1)
     * binutils 2.8.1 ( alpha Ҫ snapshot)
     * bash 2.0
     * autoconf 2.12 ( configure.in)
     * texinfo 3.11
       
   һװ 64MB  i586@133 ϣ ĺʽ븽׼
   ԼҪСʱ  i686@200 ĻԼҪһСʱ
   
  ⿪ԭʼ
  
   Ҫ archive нԭʼܱ õķʽǣ
   
 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

   ⽫ linuxthreadscrypt  localedata Ŀ¼ŵ glibc-2.0.6 Ŀ¼
   £  configure ҵЩ׼
   
  趨̬
  
    glibc-2.0.6 Ŀ¼£һµĿ¼ compile  cd 
   compile £ҲĹĿ¼ɣ 
   (չƺδ 'make clean' úܺ)
   
 mkdir compile
 cd compile

   ִ ../configure Ҫʹø׼ --enable-add-ons ָ 
    --enable-add-ons=linuxthreads,crypt,localedata ҲҲҪָ
   װĿ¼Ҫ linux ׼ܹ ָΪ --prefix=/usr ( linux
   ϵͳ prefix Ϊ /usr configure ֪Ҫ· ý
   libc.so ԼҪĺʽŵ /lib)  configure £
   
 ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr

  
  
   Ҫ֤ ִУ
   
 make
 make check

5.2 ׼װ

   ԭʼԤȱõİ汾ڱƶĳЩӭ
   ĺʽ⡣ κ±ĳʽᱻᵽ glibcǾо̬ĳʽȻ
   п libc 5 㲻ֻǸǵеİ汾
   
    1. һµĿ¼þɵ
       
 mkdir -p /usr/i486-linuxlibc5/lib

    2. ɵıͷ /usr/include ƿ
       
 mv /usr/include /usr/i486-linuxlibc5/include

    3. һµ include Ŀ¼趨 include Ŀ¼᣺
       
 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++

       ЩҪϵͳ  Slackware Уg++ ͷ
        /usr/local/g++-include  Debian ȴ /usr/include/g++
       ҽ /usr/lib/g++-include ᵽ /usr/include/g++ ߵ
       ҲҪԭʼ g++ include Ŀ¼ƻص /usr/include
    4. شжıͷᡣ ĳЩǱ׼ĺʽὫ
       /usr/include  /usr/include һᵽǵ include Ŀ¼
       ¡ Щش棬˲ſȷʹЩĺʽ⡣
    5. ºʽ· ( /usr/i486-linuxlibc5/lib) 뵽
       /etc/ld.so.conf Ķˡ Ҫ ld.so 1.8.8 Ǹµİ汾 
       ڰװ glibc ֮һЩֵѶϢ
    6. ƻеľɺʽ⵽µĿ¼
       
 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

        /usr  / ڲͬ partition ϣ  libm.so.5 
       libc.so.5 ӦøƵķǰƣ ΪһЩ linux ĳʽҪ
       ʽ⣬ ˱Ҫλ root partition
    7.  /usr/lib/*.o ƵµĿ¼¡
       
 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. ĺʽƶᣬ  library cache
       
 ldconfig -v

5.3 Ԥȱõ׼װ

   һԤȱõ glibc װ 룺
   
 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

   õǲͬϵͳܹǰ汾ûʵĵ
   
5.4 ԭʼ밲װ

   Ҫԭʼ밲װ ִУ
   
 make install
 ldconfig -v

5.5  gcc specs

   װһ (Ԥȱõ׼ԭʼ밲װ) Ǹ gcc
    spec  ȷĳʽ Ҫ֪ gcc õһ
   spec  룺
   
 % gcc -v
 reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
 gcc version 2.7.2.2

   ϵͳ i486-unknown-linux 汾 2.7.2.2 뽫
   /usr/lib/gcc-lib/<ϵͳ> ƵɵϵͳĿ¼£
   
 cd /usr/lib/gcc-lib/
 cp -r i486-unknown-linux i486-linuxlibc5

   ԭȵĿ¼汾Ŀ¼£
   
 cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2

   ޸ͬһĿ¼µ specs ⵵е /lib/ld-linux.so.1 ĳ
   /lib/ld-linux.so.2 Ҫе %{...:-lgmon} ʾʽɾ Ϊ
   glibc ʹ gmon ʽ profiling  [21]Specs  ҵ
   һ specs ġ
   
5.6 İװ

   Ҫ԰װǷȷ 뽨 glibc.c £
   
 #include <stdio.h>

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

    compile ʽ
   
 % gcc glibc.c -o glibc

   ʹ ldd ֤ʽᵽ glibc2 ľ libc
   
 % ldd glibc
 libc.so.6 => /lib/libc.so.6 (0x4000e000)
 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

   ʽͨ compileִ "hello world!" 
   ʾѾװɹ
   
6. ʹ÷Ҫ C ʽʽ

   ЩʱҪʹòͬĺʽĳʽһڻδ
   Ŀġ һʹǰʹõĿ¼밲װƣǵҪıЩ
   趨
   
6.1 һʹ÷Ҫ C ʽľ

   㿪ʼκλڿʱõĳʽ֮ǰ ʽǶ̬ᣬ
   non-root partition  mount ֮ǰʹõĻ õĺʽⶼ
   root partition ϡ ǰİװǽ glibc װҪĺʽ
    ɵĺʽȻ /lib /lib  root partition ϣ Ҳ˵
   ڿʱõĳʽ Ȼ /usr ڲͬ
   partition ϣ Ұ glibc ɲõĺʽ⣬װ
   /usr/i486-linuxglibc2 ǳ /usr Ѿ mount glibc 
   ĳʽʹá
   
6.2 ò԰װ glibc ʽ

   Ҫò԰װ glibc ʽ Ҫ include · glibc 
   include · ָ "-nostdinc" ȡ include · 
   "-I/usr/i486-linuxglibc2/include" ָ glibc  include Ŀ¼ Ҳ
   Ҫָ gcc ׼ include Ŀ¼ ͨ
   /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include (㰲װ
   ĺʽ i486-linuxglibc2  gcc İ汾 2.7.2.2)
   
   Ҫò԰װ glibc ᣬָ gcc 趨  "-b
   i486-linuxglibc2" ѡɡ
   
   Դ󲿷ݵĳʽ Լ򵥵Ľ makefile  $CFLAGS  $LDFLAGS
   ѡУ
   
 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

   ʹ configure  scriptִ configure ֮ǰ  shell 
    $CFLAGS  $LDFLAGS ( csh/tcsh  env/setenv  sh/bash/֮
    set/export)  makefile Ӧûȷ $CFLAGS 
   $LDFLAGS е configure scrpt ȥȡЩ ִ
    configure ֮ᣬ㻹Ҫһ makefile ҪĻֶ޸
   
   
   Ҫĳʽֻ gcc(ֱӺ cpp  binutils) ʹ
   µ scriptʡȥÿָѡ鷳
   
 #!/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 "$@"

   ʱʹ script  gcc
   
6.3  glibc Ҫʽʱ libc 5 ʽ

   Ѿ glibc װҪĺʽ֮ᣬþɵĺʽʽʱ
    뽫 include ·ɾɵ· ָ "-nostdinc" ʹԤ
   ·Ч  "-I/usr/i486-linuxlibc5/include" Ὣ include ·ָ
   ɺʽ include · ҲҪָ
   "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" Ժ gcc 
   include  עҪµĿ¼ gcc 汾Щ·
   
   Ҫþɵ libc ᣬָ gcc õļܹ  "-b
   i486-linuxlibc5" ѡָġ
   
   Դ󲿷ݵĳʽԼ򵥵ĽЩѡ뵽 makefile  $CFLAGS 
   $LDFLAGS ѡ
   
 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

   ʹ configure  script ִ configure ֮ǰ  shell
    $CFLAGS  $LDFLAGS ( csh/tcsh  env/setenv  sh/bash/
   ֮ set/export)  makefile Ӧûȷ $CFLAGS 
   $LDFLAGS е configure scrpt ȥȡЩ ִ
    configure ֮ᣬ㻹Ҫһ makefile ҪĻֶ
   
   
   Ҫĳʽֻ gcc(ֱӺ cpp  binutils) ʹ
   µ scriptʡȥÿָѡ鷳
   
 #!/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 "$@"

   ʱʹ script  gcc
   
7.  C++ ʽ

   Ϊ libg++ ʹ˲ݵѧʽ⣬Ҳ˵ᵽ libm Ŀǰ
    libg++ þɰĺʽģ  glibc  compile
   libg++ ȡһԤȱõİ汾 ° libg++ source 
   glibc Ԥȱ
   [22]ftp://ftp.yggdrasil.com/private/hjl/ ҵ
   
7.1 òԵ C ʽⰲװ libg++

   Ѿ glibc װɲõĺʽ⣬밲װ glibc װ
   Ŀ¼ (ǰһʾ /usr/i486-linuxglibc2) ҪװԤȱ
   õİ汾 (ҲҽİװʽΪһֱַʽɹر
    libg++) 뽫⵽ݴĿ¼£  usr/lib/ µе
    <install directory>/lib/  usr/include/ µеᵽ
   <install directory>/include/ £ (ǵɾ include/g++ ᣡ)
   ٽ usr/bin/ µĵᵽ <install directory>/bin/
   
7.2 Ҫ glibc °װ libg++

   Ѿ glibc װҪĺʽ⣬绹Ҫþɵ libc  g++
   ĳʽ Ƚɵ libg++ ɵ libc Ŀ¼¡ Ҳ
   ķʽǰһ libc 5 װһ°Ŀ Ȼװ
   glibc 档
   
7.3 ʹ÷Ҫ C ʽ C++ ʽ

   ÷Ҫ C ʽ C++ ʽ Ҫ g++ 
   include Ŀ¼ У Բõ glibc 
   /usr/i486-linuxglibc2/include/g++ Ҫ glibc 
   /usr/i486-linuxlibc5/include/g++ ͨ $CXXFLAGS 
   ɣ
   
 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. 

   Ϊ⺯ʽдĶ FAQҲѾ⣬ 
   ҲѾ˼򵥵Ľ ⣬ҲӦò鿴 INSTALL е
   "Recommended Tools to Install the GNU C Library" һڣ ΪЩ
    glibc Щߡ
   
   ҵ˳ȷǵȷǳ һжϵĺ÷ǿ glibc
   ΪǷ C ʽͬ ͬĻҲǴģʽ
   ȷġ (Ҳһ) 粻ͬĻǿ϶֮һǴ
   ġ
   
   뵽 [23]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl 
   鿴Ͽ⣬ȷδ ҲӦÿ BUGS (ڸ
   libc ) гĿǰѱֵĳ
   
   һȷҵһֻµĳСС test case  C
   ʽԣֻҪСһʽ(ԵĻ) Ӧò
   ̫ѵ¡
   
   һǾ test case 档 Ҫͳ棬
    test caseõĽڴĽ Ϊܵԭ (ֻ
   Ҫκԭ)ϵͳʹõ GNU C ʽ⡢ GNU CC
   GNU binutils İ汾⣬ 븽ִ configure ʱ
   config.status  config.make ִ configure ʱĿ
   ¼¡
   
   еĳ涼Ӧʹ glibcbug  GNU libc  shell script 
    [24]bugs@gnu.org (ɵλַ [25]bugs@gnu.ai.mit.edu ҲȻʹ)
   ǵ GNATS վ
   [26]http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl 
   
   ĽӦ͵ [27]bugs-glibc@prep.ai.mit.edu ʵб 
   ûĶȺ gnu.bug.glibc Ҫ
   [28]bug-glibc-request@prep.ai.mit.edu б
   
   벻Ҫ GNU C ʽĳ͵ <bug-gcc@prep.ai.mit.edu> Ϊ
    GNU CC ģ GNU CC  GNU C ʽɲͬǵάġ
   
9. Specs 

   һ specs ġ⽫ʹ gcc  glibc2 ᡣ Ӧλ
   /usr/lib/gcc-lib/<ϵͳĿ¼>/<gcc 汾>. õ x86 ϵͳ
   ҲֱӽһθƵȥ
   
 *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 һ

  ҳ
  
     * [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.
       
  Ⱥ
  
     * [33]comp.os.linux.development.system
     * [34]comp.os.linux.development.apps
     * [35]linux.dev.kernel
     * [36]gnu.bugs.glibc
       
  ʵб
  
   Glibc 2 Linux б
          ʵбΪðװ glibcҲµ GNU C ʽ⣬ʹ
          õġ Ե⣬Լ linux/glibc ³
          ʽı⡣ Ҫʵб һ
          [37]Majordomo@ricardo.ecn.wfu.edu ŵΪ "subscribe
          glibc-linux <your email address>"
          
10.2 б

   󲿷ݵѶ [38]GNU Libc web page Լ Ulrich Drepper 
   <drepper@gnu.ai.mit.edu> glibc 2 announcement ͵ģ Andreas
   Jaeger <aj@arthur.rhein-neckar.de> ṩ˲ݵĳ档
   
   ¸λԱļṩѶԼ
     * 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>
       
   ļķɵģ
     * ģ Allex Juang<allex@ms2.accmail.com.tw>
     * ģ Olivier Tharan <tharan@int-evry.fr>
     * ģ Kazuyuki Okamoto <ikko-@pacific.rim.or.jp>
       
10.3 

   ׫д HOWTOά [39]glibc 2 for Linux ҳҵĻ
   ʹ֮⣬ glibc ƻȫ޹أ Ҳ˽ⷽ⣬ᾡ
   ĶԼĸҵṩ ҲܻӭκεĻǽ飬
   뽫Ǽĵ [40]ejg3@cornell.edu
   
10.4 Copyright.

   ˷ļİȨ Eric Greenļ LDP ִɢ

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
