








			     Glibc 2 HOWTO İ

		       ԭ Eric Green, ejg3@cornell.edu

		     Allex Juang, allex@ms2.accmail.com

			    1.5 , 1998 2 8



				   Abstract

     GNU C library (see glibc) glibc  glibc 2 HOWTO ݰ Linux
     ϵͳϰװʹõڶ GNU C Library



1.  

1.1   glibc 2

glibc!overview Glibc 2 ° GNU C ʽ⡣ Ŀǰ޸ľͿ GNU
HurdLinux 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)


Glibc 2 HOWTO İ							      1





Glibc 2 HOWTO İ							      2



ʹߣ ֻҪļгֵĵԼϵͳܹʵĴ
ӦҲɵõЩ

 HOWTO °汾Ŀ Linux Documentation Project1  
<URL: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!installing

ַʽװ glibc԰װһõĺʽ⣬
Ŀǰʹõĺʽ⵱ڶģ
Ȼڱʽʱòͬѡµĺʽ⡣
ְװʽ׵Ƴ glibc (Ȼ glibc ĳʽƳ glibc
ᶼʹ) ⣬ַʽװԭʼ±룬 û binary
distribution ԰װɲԵĺʽ⡣ İװհװɲõĺʽ
(section 4., page 4)

ļ˵һַʽǽ glibc װҪʽ⡣
±ĳʽʹ glibc
Ҳڱʱòͬѡʽᵽɵĺʽ⡣
ֱӰװѾõİ汾ҲԼ뺯ʽ⡣
ѻ̬ѡ ѱõİ汾δ֧Ԯ add-on Ļ
ȡԭʼ벢Լ룬װĹ װҪ C ʽ
(section 5., page 7)

Frodo Looijaard һ glibc İװʽ ķǽ glibc
װɴҪĺʽ⣬ Ȼ趨 (cross compiler) ʹ glibc
ʽļеĲ԰װҪӵĶ࣬ǱȽᵽ glibc
 Installing glibc-2 on Linux2  ļ˵

ʹõ Debian 1.3 ǲΪ glibc ȶİ汾 

____________________

1. <URL:http://sunsite.unc.edu/LDP>

2. <URL:http://huizen.dds.nl/~frodol/glibc/>







Glibc 2 HOWTO İ							      3



Debian libc5 to libc6 Mini-HOWTO3  ʹ Debian  package 

Ҫ glibc 2 װһҪϵͳϣ
ҲӦʹòԵİװڱϵͳԿ
ʹûгĳЩʽڱ֮ǰȻҪĳЩ޸ģ
ԭĳЩʽԭ̬ϵĸı䡣


3.  ȡúʽ

glibc!obtaining

Glibc 2  glibc package Լ׼ LinuxThreads Locale  Crypt
ԭʼ

    <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.6.tar.gz>

    <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2.0.6.tar.gz>

    <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2.0.6.tar.gz>

    <URL: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:

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4.bin.i386.tar.gz>

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4.bin.i386.tar.gz>


    Alpha:

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.1.bin.alpha-
	  linux.tar.gz>

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.1.bin.alpha-
	  linux.tar.gz>


    m68k:

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-2.0.4-m68k-linux.bin.tar.gz>

	 <URL:ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2.0.4-m68k-
	  linux.bin.tar.gz>

____________________

3. <URL:http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html>







Glibc 2 HOWTO İ							      4



 cypt ׼гƣʹ뵽
<URL:ftp://ftp.ifi.uio.no/pub/gnu> ȡá

õ RedHat distribution Դ <URL:ftp://ftp.red
hat.com/pub/redhat/> ȡ glibc2  rpm  RedHat distribution 5.0 У glibc
2 Ҫ C ʽ⡣

õ Debian distributionԴ
<URL:ftp://ftp.debian.org/debian/dists/unstable/main/> ȡ glibc2  pack
age libc6 Glibc 2 Ŀǰ Debian ԰Ļ package ȵ Debian
2.0 ֮ὫҪ C ʽ⡣


4.  װɲõĺʽ

glibc!testing

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

4.1  밲װ

4.1.1  

glibc!testing!prerequisites

    Լ 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 ԼһСʱ

4.1.2  ⿪ԭʼ

glibc!testing!sources, extracting

 archive ȡԭʼ롣˲ܱõķʽ£












Glibc 2 HOWTO İ							      5



      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

4.1.3  趨̬

glibc!testing!configuring

 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 Ǹѡ  config
ure £

      ../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2


4.1.4  밲װ

glibc!testing!compiling glibc!testing!installing

Ҫִ֤

      make
      make check



 'make check' ɹˣװʽ⣺

      make install


4.2   dynamic loader

glibc!testing!dynamic loader, updating glibc!testing!ld.so.conf, updating










Glibc 2 HOWTO İ							      6



  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-lin
      uxglibc2/lib ޸ /etc/ld.so.conf ֮ᣬִУ

	    ldconfig -v


4.3  趨 gcc

glibc!testing!gcc configuration

װһǸ /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 Specs  (section 9., page
15)ҵһ

4.4  ±ͷ

glibc!testing!header files, updating

Ҫ include Ŀ¼½ᵽ include Ŀ¼








Glibc 2 HOWTO İ							      7



      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  com
pile£ ֻҪ벢Ұװ /usr/i486-linuxglibc2)

4.5  İװ

glibc!testing

Ҫ԰װǷɹһ 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.  װҪʽ

glibc!installation

һڵǹ춽 glibc2 װҪ C ʽ⡣
κ³ʽᵽһʽ⣬
ıѡᵽİ汾

 RedHat  Debian ص rpm  deb   RedHat 








Glibc 2 HOWTO İ							      8



Debian İװ˵ֱһڡ

5.1  ԭʼ뺯ʽ

glibc!installation!compilation

һڽԭʼ glibc 2 븽׼
Ҫıѻ̬ѡʹö׼ͱ뺯ʽ⡣

5.1.1  

glibc!installation!prerequisites

    Լ 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
ĻԼҪһСʱ

5.1.2  ⿪ԭʼ

glibc!installation!sources, extracting

Ҫ 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 ҵЩ׼

5.1.3  趨̬

glibc!installation!configuration

 glibc-2.0.6 Ŀ¼£һµĿ¼ compile  cd  compile
£ҲĹĿ¼ɣ 








Glibc 2 HOWTO İ							      9



(չƺδ '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

5.1.4  

glibc!installation!compilation

Ҫ֤ ִУ

      make
      make check


5.2  ׼װ

glibc!installation!preparation for

ԭʼԤȱõİ汾ڱƶĳЩӭµĺʽ⡣
κ±ĳʽᱻᵽ 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++









Glibc 2 HOWTO İ							     10



      ЩҪϵͳ  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!installation!precompiled binaries

һԤȱõ glibc װ 룺











Glibc 2 HOWTO İ							     11



      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  ԭʼ밲װ

glibc!installation!from source

Ҫԭʼ밲װ ִУ

      make install
      ldconfig -v


5.5   gcc specs

glibc!installation!gcc specs file, updating

װһ (Ԥȱõ׼ԭʼ밲װ) Ǹ 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  Specs  (section 9., page 15) ҵһ
specs ġ

5.6  İװ

glibc!installation!testing









Glibc 2 HOWTO İ							     12



Ҫ԰װǷȷ 뽨 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 ʽʽ

glibc!compiling with alternate library

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

6.1  һʹ÷Ҫ C ʽľ

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

6.2  ò԰װ glibc ʽ

glibc!compiling with alternate library!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 (㰲װԵĺʽ








Glibc 2 HOWTO İ							     13



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-linuxglibc2/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!compiling with alternate library!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-linuxlibc5/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








Glibc 2 HOWTO İ							     14



֮ᣬ㻹Ҫһ 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++ ʽ

glibc!C++ programs, compiling

Ϊ libg++ ʹ˲ݵѧʽ⣬Ҳ˵ᵽ libm Ŀǰ libg++
þɰĺʽģ  glibc  compile libg++
ȡһԤȱõİ汾 ° libg++ source  glibc
Ԥȱ <URL:ftp://ftp.yggdrasil.com/private/hjl/> ҵ

7.1  òԵ C ʽⰲװ libg++

glibc!libg++, installing!as test library

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

7.2  Ҫ glibc °װ libg++

glibc!libg++, installing!as primary library Ѿ glibc
װҪĺʽ⣬绹Ҫþɵ libc  g++ ĳʽ Ƚɵ
libg++ ɵ libc Ŀ¼¡ Ҳ򵥵ķʽǰһ libc 5
װһ°Ŀ Ȼװ glibc 档

7.3  ʹ÷Ҫ C ʽ C++ ʽ

glibc!C++ programs, compiling!with non-primary libc ÷Ҫ 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-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc2










Glibc 2 HOWTO İ							     15



8.  

glibc!bugs, reporting

Ϊ⺯ʽдĶ FAQҲѾ⣬
ҲѾ˼򵥵Ľ ⣬ҲӦò鿴 INSTALL е "Recommended
Tools to Install the GNU C Library" һڣ ΪЩ glibc
Щߡ

ҵ˳ȷǵȷǳ һжϵĺ÷ǿ glibc
ΪǷ C ʽͬ
ͬĻҲǴģʽȷġ (Ҳһ)
粻ͬĻǿ϶֮һǴġ

뵽 <URL: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 
<URL:bugs@gnu.org> (ɵλַ <URL:bugs@gnu.ai.mit.edu> ҲȻʹ) ǵ
GNATS վ <URL:http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl>


ĽӦ͵ <URL:bugs-glibc@prep.ai.mit.edu> ʵб
ûĶȺ gnu.bug.glibc Ҫ <URL:bug-glibc-
request@prep.ai.mit.edu> б

벻Ҫ GNU C ʽĳ͵ <bug-gcc@prep.ai.mit.edu> Ϊ GNU CC
ģ GNU CC  GNU C ʽɲͬǵάġ


9.  Specs 

glibc!GCC specs file, sample

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














Glibc 2 HOWTO İ							     16



      *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:
      . ;



10.  

glibc!miscellanea

10.1  һ

glibc!information resources"










Glibc 2 HOWTO İ							     17



10.1.1	ҳ

glibc!information resources!WWW

    FSF's GNU C Library Home Page4

    Using GNU Libc 2 with Linux5

    Installing glibc-2 on Linux6 .

    Debian libc5 to libc6 Mini-HOWTO7 .

10.1.2	Ⱥ

glibc!information resources!newsgroups

    comp.os.linux.development.system

    comp.os.linux.development.apps

    linux.dev.kernel

    gnu.bugs.glibc

10.1.3	ʵб

glibc!information resources!mailing lists

      Glibc 2 Linux б
	    ʵбΪðװ glibcҲµ GNU C
	    ʽ⣬ʹõġ Ե⣬Լ linux/glibc
	    ³ʽı⡣ Ҫʵб һ
	    Majordomo@ricardo.ecn.wfu.edu8  ŵΪ "subscribe glibc-linux
	    <your email address>"

10.2  б

󲿷ݵѶ GNU Libc web page9  Լ Ulrich Drepper  <drep
per@gnu.ai.mit.edu> glibc 2 announcement ͵ģ Andreas Jaeger
<aj@arthur.rhein-neckar.de> ṩ˲ݵĳ档


____________________

4. <URL:http://www.gnu.org/software/libc/libc.html>

5. <URL:http://www.imaxx.net/~thrytis/glibc/>

6. <URL:http://huizen.dds.nl/~frodol/glibc/>

7. <URL:http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-HOWTO.html>

8. <URL:mailto:Majordomo@ricardo.ecn.wfu.edu>

9. <URL:http://www.gnu.org/software/libc/libc.html>







Glibc 2 HOWTO İ							     18



¸λԱļṩѶԼ

    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ά glibc 2 for Linux10
ҳҵĻʹ֮⣬ glibc ƻȫ޹أ
Ҳ˽ⷽ⣬ᾡܵĶԼĸҵṩ
ҲܻӭκεĻǽ飬뽫Ǽĵ ejg3@cornell.edu11 

10.4  Copyright.

˷ļİȨ Eric Greenļ LDP ִɢ


____________________

10.<URL:http://www.imaxx.net/~thrytis/glibc>

11.<URL:mailto:ejg3@cornell.edu>







Glibc 2 HOWTO İ							     19





































































				   CONTENTS



1.   .................................................................... 1
    1.1   glibc 2 ....................................................... 1
    1.2  ļ ....................................................... 1
    1.3  ļ¸ı ................................................. 2

2.  ѡİװʽ ........................................................ 2

3.  ȡúʽ .............................................................. 3

4.  װɲõĺʽ .................................................... 4
    4.1  밲װ ......................................................... 4
    4.2   dynamic loader ................................................ 5
    4.3  趨 gcc ........................................................... 6
    4.4  ±ͷ ..................................................... 6
    4.5  İװ ....................................................... 7

5.  װҪʽ ........................................................ 7
    5.1  ԭʼ뺯ʽ ................................................. 8
    5.2  ׼װ ........................................................... 9
    5.3  Ԥȱõ׼װ ............................................ 10
    5.4  ԭʼ밲װ ...................................................... 11
    5.5   gcc specs .................................................... 11
    5.6  İװ ...................................................... 11

6.  ʹ÷Ҫ C ʽʽ .......................................... 12
    6.1  һʹ÷Ҫ C ʽľ ................................. 12
    6.2  ò԰װ glibc ʽ ....................................... 12
    6.3   glibc Ҫʽʱ libc 5 ʽ ......................... 13

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

8.   ............................................................... 15

9.  Specs  ........................................................... 15

10.  ................................................................... 16
    10.1 һ ...................................................... 16
    10.2 б ........................................................ 17
    10.3  .............................................................. 18
    10.4 Copyright. ........................................................ 18









				       i


