  Glibc 2 HOWTO
  Eric Green, ejg3@cornell.edu. versttare: Linus kerlund,
  uxm165t@tninet.se.
  v1.5, 8 February 1998. versttning: 26 juli 1998.



  Glibc2-HOWTOn tar upp installering och anvndning av GNU C-bibliotek
  version 2 (libc 6) p Linux-system.
  ______________________________________________________________________

  Innehllsfrteckning






















































  1. Inledning

     1.1 Om glibc 2.
     1.2 Om detta dokument.
     1.3 Nyligen gjorda ndringar i detta dokument.

  2. Att vlja installeringsmetod.

  3. Skaffa biblioteket.

  4. Installera som ett test-bibliotek.

     4.1 Kompilera och installera.
        4.1.1 Frutsttningar.
        4.1.2 Packa upp kllkoden.
        4.1.3 Konfigurering.
        4.1.4 Kompilera och installera.
     4.2 Uppdatera den dynamiska laddaren.
     4.3 Konfigurering fr gcc.
     4.4 Uppdatera lnkar till header-filer
     4.5 Testa din installering.

  5. Installera som primrt C-bibliotek.

     5.1 Bygga biblioteket frn kllkod.
        5.1.1 Frutsttningar.
        5.1.2 Packa upp kllkoden.
        5.1.3 Konfigurering.
        5.1.4 Kompilera.
     5.2 Frberedelser infr installeringen.
     5.3 Installering frn binrpaket.
     5.4 Installera frn kllkod.
     5.5 Uppdatera gcc-specs.
     5.6 Testa din installering.

  6. Kompilera med det icke-primra libc.

     6.1 En varning angende anvndandet av icke-primra libc.
     6.2 Kompilera program med ett test-glibc.
     6.3 Kompilera program med libc5 nr glibc r primrt bibliotek.

  7. Kompilera C++-program.

     7.1 Installera libg++ fr ett test-installerat glibc.
     7.2 Installera libg++ fr glibc som primrt bibliotek.
     7.3 Kompilera C++-program med det icke-primra libc.

  8. Rapportera buggar.

  9. Exempel p specs-fil.

  10. Diverse.

     10.1 Vidare information.
        10.1.1 Webb-sidor.
        10.1.2 Nyhetsgrupper.
        10.1.3 Mailinglistor.
     10.2 Tillknnagivanden.
     10.3 Respons.
     10.4 Upphovsrtt.


  ______________________________________________________________________



  1.  Inledning



  1.1.  Om glibc 2.


  Glibc 2 r den senaste versionen av GNU C-biblioteket. Fr tillfllet
  kan det kras ofrndrat p GNU/Hurd-system och Linux i386-, m68k- och
  Alpha-system. Std fr Linux PowerPC, MIPS, Sparc, Sparc 64 och Arm
  kommer finnas i och med version 2.1. I framtiden kommer std fr andra
  arkitekturer och operativsystem lggas till.

  Under Linux anvnds glibc 2 som libc med versionsnummer 6, allts som
  uppfljaren till Linux libc 5. Det avses av Linux libc-utvecklarna
  erstta libc 5 s smningom. I och med 2.0.6 anses glibc vara stabilt.
  Version 2.1 (som br vara ute snart) kommer vara klar att anvndas i
  alla sammanhang, och kommer stdja flera arkitekturer och ha nya
  funktioner.

  Tre valfria tillgg finns tillgngliga fr glibc 2:


     Crypt
        UFC-crypt-paketet. Det hlls separat p grund av export-
        restriktioner.

     LinuxThreads
        En implementering av Posix 1003.1c "pthread"-grnssnittet.

     Locale data
        Innehller alls som behvs fr att skapa locale-datafiler, fr
        att utnyttja glibcs internationaliserings-funktioner.

  Crypt- och LinuxThreads-tillggen r starkt rekommenderade... Om du
  inte anvnder dem riskerar du att ditt glibc inte r kompatibelt med
  biblioteken p andra system. (Om du inte vill anvnda dem mste du
  lgga till parametern --disable-sanity-checks nr du kr configure.)


  1.2.  Om detta dokument.


  Denna HOWTO tar upp installering av glibc 2-biblioteket p ett
  existerande Linux-system. De r riktat till anvndare av Intel-
  baserade system som fr tillfllet anvnder libc 5, men anvndare av
  andra system och alternativa bibliotek (som t.ex. glibc 1) br ocks
  kunna anvnda denna information genom att stta in passande filnamn
  och arkitekturer dr detta ska gras.

  Den senaste versionen av denna HOWTO hittar du hos Linux Documentation
  Project <http://sunsite.unc.edu/LDP> och
  <http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html>.

  Den svenska versionen ska finnas tillgnglig frn www.swe-doc.linux.nu
  <http://www.swe-doc.linux.nu/> och min hemsida
  <http://user.tninet.se/~uxm165t/linux_doc.html>.


  1.3.  Nyligen gjorda ndringar i detta dokument.


  Skillnader mellan version 1.5 och 1.4:



    Indexering tillagt av Ed Bailey.

    ndrade min epost-adress (original-frfattarens. vers.anm.)

  Skillnader mellan version 1.4 och 1.3:

    ndrade status frn experimentellt till stabilt.

    Uppdaterade listan ver utvecklingsversioner.

    Uppdaterade senaste versionen till 2.0.6.



  2.  Att vlja installeringsmetod.


  Det finns ngra olika stt att installera glibc. Du kan installera
  biblioteken som ett test, och anvnda de existerande biblioteken som
  standard, vilket lter dig prva de nya biblioteken genom att anvnda
  olika parametrar d du kompilerar dina program. Installerar du p
  detta stt r det enkelt att ta bort glibc i framtiden (men detta gr
  att inget program som r lnkat med glibc fungerar lngre, d
  biblioteken r borttagna). Vill du anvnda glibc som testbibliotek s
  mste du kompilera det frn kllkod. Det finns ingen binrdistribution
  fr att installera biblioteken p detta stt. Denna installering
  beskriv i ``Installera som ett test-bibliotek''.

  Det andra sttet att installera, som beskrivs i det hr dokumentet, r
  att anvnda glibc som ditt primra bibliotek. alla nya program som du
  kompilerar p ditt system kommer anvnda glibc, men du kan lnka
  programmen med ditt gamla bibliotek genom att ange andra parametrar d
  du kompilerar. Du kan antingen installera biblioteken frn binrer
  eller kompilera sjlv. Om du vill ndra optimerings- eller
  konfigurerings-alternativ eller anvnda ett tillgg som inte
  distribueras med binrpaketet s mste du skaffa kllkoden och
  kompilera den. Denna installeringsprocedur beskrivs i ``Installera som
  primrt C-bibliotek''.

  Frodo Looijaard beskriver nnu ett annat stt att installera glibc.
  Hans metod gr ut p att installera glibc som sekundrt bibliotek och
  konfigurera en korskompilator (cross compiler) fr att kompilera med
  glibc. Installeringsproceduren fr denna metod r mer komplicerad n
  test-biblioteksinstalleringen som beskrivs i detta dokument, men gr
  det mycket enklare att kompilera nr du lnkar med glibc. Denna metod
  beskrivs i hans dokument Installing glibc-2 on Linux
  <http://huizen.dds.nl/~frodol/glibc/>.

  Om du kr Debian 1.3 men inte vill uppgradera till en instabil version
  av Debian fr att kunna anvnda glibc s beskriver Debian libc5 to
  libc6 Mini-HOWTO <http://www.gate.net/~storm/FAQ/libc5-libc6-Mini-
  HOWTO.html> hur du kan uppgradera ditt system med Debian-paket.

  Om du installerar glibc 2 p ett viktigt system s br du nog vlja
  test-installeringen. ven om det inte finns ngra buggar s kommer
  vissa program krva vissa modifikationer innan de kan kompileras,
  p.g.a. ndringar i funktions-prototyper och typer.


  3.  Skaffa biblioteket.


  glibc 2 bestr av glibc-paketet och tre valfria tillggspaket;
  LinuxThreads, Locale och Crypt. Kllkoden hittar du bl.a. p:


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

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

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

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

  Den tar upp ungefr 150 MB diskutrymme fr en fullstndig kompilering
  och installering. Den grundlggande binrinstalleringen av bara krnan
  i biblioteket r p ungefr 50 MB.

  Binrpaket fr 2.0.6 r inte tillgngliga. Binrpaket av version 2.0.4
  finns tillgngliga fr i386 och m68k, och version 2.0.1 fr Alpha.
  Dessa hittar du p:

    Intel x86:

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

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

    Alpha:

    <ftp://prep.ai.mit.edu/pub/gnu/glibc-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>

    m68k:

    <ftp://prep.ai.mit.edu/pub/gnu/glibc-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>

     Crypt-tillgget r belagt med exportrestriktioner. Bor du utanfr
     U.S.A. kan du hmta detta frn  <ftp://ftp.ifi.uio.no/pub/gnu>.

  Om du kr en Red Hat-distribution s kan du skaffa glibc 2 som RPM-
  paket frn  <ftp://ftp.redhat.com/pub/redhat/>.  glibc 2 r det
  primra C-biblioteket fr Red Hat 5.0.

  Om du kr en Debian-distribution kan du hmta glibc 2-paket frn
  <ftp://ftp.debian.org/debian/dists/unstable/main/>. Filerna heter
  libc6. glibc 2 r nu med i baspaketet av hamm-versionen av Debian och
  kommer vara det primra C-biblioteket nr Debian 2.0 kommer ut.


  4.  Installera som ett test-bibliotek.


  Detta avsnitt tar upp installeringen av glibc 2 som ett test-
  bibliotek. Allt du kompilerar kommer lnkas med dina existerande
  bibliotek om du inte ger ngra extraparametrar fr att lnka med de
  nya biblioteken. Det verkar som att skvgarna kompileras in i en hel
  del filer, s du gr antagligen bst i att installera biblioteket frn
  kllkod.


  4.1.  Kompilera och installera.





  4.1.1.  Frutsttningar.



    Runt 150 MB fritt diskutrymme

    GNU make 3.75

    gcc >= 2.7.2 (nnu hellre 2.7.2.1)

    binutils 2.8.1 (till Alpha behver du ett snapshot)

    bash 2.0

    autoconf 2.12 (om du ndrar configure.in)

    texinfo 3.11

  P en i586@133 med 64 MB RAM tar det runt 3 timmar att kompilera med
  fullstndiga bibliotek och tillgg. P en laddad i686@200 tar det runt
  en halvtimme.


  4.1.2.  Packa upp kllkoden.


  Du mste packa upp kllkoden frn arkivet s att du kan kompilera den.
  Det bsta sttet att gra detta p r:


        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





  Detta kommer att placera linuxthreads-, crypt- och localedata-kata
  logerna i glibc-2.0.6-katalogen dr configure kan hitta dessa tillgg.


  4.1.3.  Konfigurering.


  I glibc-2.0.6-katalogen ska du skapa en katalog som heter compile och
  cd-a till den. Allt arbete kommer gras i denna katalog, vilket
  frenklar stdningen. (Utvecklarna har inte brytt sig speciellt mycket
  om att gra 'make clean' perfekt n.)


        mkdir compile
        cd compile





  Kr ../configure. Fr att anvnda tillggspaketen mste du ange dessa
  med --enable-add-ons, t.ex. --enable-add-ons=linux
  threads,crypt,localedata. Du mste ven vlja en katalog att
  installera i. /usr/i486-linuxglibc2 r ett bra val. configure-raden
  fr detta blir:

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






  4.1.4.  Kompilera och installera.



  Fr att kompilera och verifiera, kr:


        make
        make check





  Om 'make check' gr bra s kan du installera biblioteket:


        make install






  4.2.  Uppdatera den dynamiska laddaren.




  1. Skapa en lnk frn den nya ls.so till /lib/ld-linux.so.2:


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





  Detta r det enda biblioteket vars position r fast d ett program
  lnkas, och att anvnda en lnk i /lib gr det lttare att uppgradera
  till glibc som ditt primra C-bibliotek nr den stabila versionen ges
  ut.

  2. Editera /etc/ld.so.conf. Du mste, i slutet av filen, lgga till
     skvgen till lib-katalogen dr det nya biblioteket finns, vilket
     blir <prefix>/lib, allts /usr/i486-linuxglibc2/lib i exemplet
     ovan. D du modifierat /etc/ld.so.conf kan du kra


        ldconfig -v









  4.3.  Konfigurering fr gcc.


  Det sista steget i installeringen r att uppdatera /usr/lib/gcc-lib,
  s att gcc vet hur det ska anvnda de nya biblioteken. Frst mste du
  ta en kopia av de existerande instllningarna. Fr att ta redan p
  vilken konfigurering du har fr tillfllet kan du anvnda parametern
  -v till gcc:


        % gcc -v
        Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
        gcc version 2.7.2.2





  I detta fall r i486-unknown-linux systemet och 2.7.2.2 r versionen.
  Du mste kopiera /usr/lib/gcc-lib/<system> till den nya test-sys
  temkatalogen:


        cd /usr/lib/gcc-lib/
        cp -r i486-unknown-linux i486-linuxglibc2





  G till din nya test-systemkatalog och versionskatalog:


        cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2





  och editera filen specs. I denna fil ska du byta ut /lib/ld-linux.so.1
  mot /lib/ld-linux.so.2. Du mste ocks radera alla uttryck
  %{...:-lgmon} i filen, eftersom glibc inte anvnder gmon-biblioteket
  fr "profiling". Ett exempel p en specs-fil kan du hitta i avsnittet
  ``Exempel p specs-fil''.


  4.4.  Uppdatera lnkar till header-filer


  Du mste skapa lnkar i din nya include-katalog till andra include-
  kataloger:


        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





  Det kan ocks hnda att du har andra bibliotek, ssom ncurses, som
  behver ha sina header-filer i denna katalog. Du br kopiera eller
  lnka filerna frn /usr/include. (Vissa bibliotek kan behva kompil
  eras om med glibc2 fr att fungera med det. I dessa fall r det bara
  att kompilera och installera paketen i /usr/i486-linuxglibc2.)


  4.5.  Testa din installering.


  Fr att testa installeringen, skapa fljande program i filen glibc.c:


        #include <stdio.h>

        main()
        {
            printf("hej vrlden!\n");
        }





  och kompilera det med parametrarna "-b <bas-installerings-katalog>
  -nostdinc -I<installerings-katalog>/include -I/usr/lib/gcc-lib/<ny
  system-katalog>/<gcc version>/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





  Anvnd ldd fr att verifiera att programmet lnkades med glibc2 och
  inte med ditt gamla libc:


        % 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)





  Om det kompilerar, lnkarna stmmer och det visar "hej vrlden!" nr
  det krs s har installeringen lyckats.




  5.  Installera som primrt C-bibliotek.


  Detta avsnitt tar upp installeringen av glibc 2 som ditt primra C-
  bibliotek. Alla nya program du kompilerar kommer lnkas med detta
  bibliotek om du inte anger speciella kompileringsparametrar, fr att
  lnka med en annan version.

  Om du anvnder RedHat eller Debian och har laddat ner de rtta rpm-
  eller deb-filerna s kan du titta p deras installeringsinstruktioner.
  Du kan hoppa ver det hr avsnittet.


  5.1.  Bygga biblioteket frn kllkod.



  Detta avsnitt frklarar hur du kompilerar kllkoden till glibc 2 och
  tillggen. Du mste kompilera biblioteket om du vill ndra
  optimeringar eller instllningar eller anvnda ett paket som du inte
  har binrt.


  5.1.1.  Frutsttningar.



    Runt 150 MB fritt hrddiskutrymme

    GNU make 3.75

    gcc >= 2.7.2 (nnu hellre 2.7.2.1)

    binutils 2.8.1 (till Alpha behver du ett snapshot)

    bash 2.0

    autoconf 2.12 (om du ndrar configure.in)

    texinfo 3.11

  P en i586@133 med 64 MB RAM tar det runt 3 timmar att kompilera med
  fullstndiga bibliotek och tillgg. P en laddad i686@200 tar det runt
  en halvtimme.


  5.1.2.  Packa upp kllkoden.


  Du mste packa upp kllkoden frn arkiven s att du kan kompilera den.
  Det bsta sttet att gra detta p r:


        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





  Detta placerar linuxthreads-, crypt- och localedata-kataloger i kata
  logen glibc-2.0.6, dr configure kan hitta dessa tillgg.


  5.1.3.  Konfigurering.


  Skapa en katalog som heter compile i glibc-2.0.6-katalogen och cd-a
  till den. Allt arbete kommer utfras i denna katalog, vilket kommer
  underltta stdningen eftert. (Utvecklarna har inte brytt sig s
  mycket om att f 'make clean' perfekt n.)



       mkdir compile
       cd compile




  Kr ../configure. Fr att anvnda tillggspaketen mste du ange dem
  med --enable-add-ons, allts t.ex. --enable-add-ons=linux
  threads,crypt,localedata. Du br antagligen ocks ange var du vill
  installera det. Fr att matcha de standardiserade Linux-distribution
  erna kan du ange --prefix=/usr. (Nr prefixet anges som /usr vet con
  figure om att den ska ndra sina skvgar fr att placera libc.so och
  andra viktiga bibliotek i /lib.) Hela configure-raden blir allts:


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





  5.1.4.  Kompilera.


  Fr att kompilera och verifiera, kr:


        make
        make check







  5.2.  Frberedelser infr installeringen.


  Nu mste du flytta runt en del filer fr att gra plats fr det nya
  biblioteket, vare sig du installerar frn kllkod eller binrer. Alla
  nya program du kompilerar kommer lnkas med glibc, men ldre program
  som inte r statiskt lnkade kommer fortfarande vara beroende av libc
  5, s du kan inte bara skriva ver den gamla versionen.


  1. Skapa en ny katalog att stoppa de gamla filerna i:


        mkdir -p /usr/i486-linuxlibc5/lib






  2. De gamla header-filerna mste evakueras frn /usr/include:


        mv /usr/include /usr/i486-linuxlibc5/include






  3. Skapa en ny include-katalog och skapa lnkar till andra include-
     kataloger:




   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++





  Lnkarna kan behva en del modifikationer, beroende p vilken distri
  bution du anvnder. tminstone Slackware stoppar g++-header-filer i
  /usr/local/g++-include, medan Debian stoppar header-filerna i
  /usr/include/g++ och lnkar /usr/lib/g++-include till
  /usr/include/g++. I det senare fallet gr du nog bst i att flytta
  tillbaks den ursprungliga g++-include-katalogen till /usr/include.

  4. terstll alla extra header-filer och lnkar. Vissa
     tillggsbibliotek, som ncurses, stoppar filer i /usr/include eller
     stoppar en lnk till sina include-kataloger i /usr/include. Dessa
     filer och lnkar mste terstllas fr att du ska kunna anvnda
     dessa bibliotek.

  5. Lgg till din nya bibliotekskatalog (som /usr/i486-linuxlibc5/lib)
     lngst upp i din /etc/ld.so.conf-fil. Du br ha ld.so 1.8.8 eller
     senare installerad fr att inte f konstiga meddelanden nr glibc
     r installerat.

  6. Flytta/kopiera all de gamla C-biblioteken till den nya katalogen.


        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





  libm.so.5 och libc.so.5 br kopieras snarare n flyttas om /usr finns
  p en annan partition n /, eftersom de behvs av programmen som
  anvnds fr att starta Linux och mste finnas p root-partitionen.

  7. Flytta /usr/lib/*.o-filerna till den nya katalogen.


        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. Uppdatera din biblioteks-cache efter att biblioteken flyttats.


   ldconfig -v







  5.3.  Installering frn binrpaket.


  Om du installerar glibc frn frkompilerade binrer mste du:


        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





  Om du har en annan arkitektur eller version s ska du naturligtvis
  byta ut filnamnen.


  5.4.  Installera frn kllkod.


  Fr att installera biblioteket frn kllkod, skriv:



        make install
        ldconfig -v







  5.5.  Uppdatera gcc-specs.


  Det sista steget i installeringen (fr bda binr- och kllkods-
  installering) r att uppdatera gccs specs-fil s att du kan lnka dina
  program. Fr att avgra vilken specs-fil som gcc anvnder s kr du:


        % gcc -v
        reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
        gcc version 2.7.2.2





  I det hr fallet r systemet i486-unknown-linux och 2.7.2.2 r
  versionen. Du ska kopiera /usr/lib/gcc-lib/<system> till den gamla
  system-katalogen:




   cd /usr/lib/gcc-lib/
   cp -r i486-unknown-linux i486-linuxlibc5





  G till den ursprungliga katalogen katalogens versionskatalog:


        cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2





  och editera filen specs som finns dr. I denna fil ska du byta ut
  /lib/ld-linux.so.1 till /lib/ld-linux.so.2. Du mste ocks ta bort
  alla %{...:-lgmon}-uttryck i filen, eftersom glibc inte anvnder gmon-
  biblioteket fr "profiling" (svensk versttning?  vers.anm.). Ett
  exempel p en specs-fil hittar du i avsnittet ``Exempel p specs-
  fil''.



  5.6.  Testa din installering.


  Fr att testa installeringen kan du skapa fljande program i filen
  glibc.c:



        #include <stdio.h>

        main()
        {
            printf("hej vrlden!\n");
        }





  och kompilera programmet.


        % gcc glibc.c -o glibc





  Anvnd ldd fr att se efter s att programmet lnkades med glibc2 och
  inte ditt gamla libc:


        % ldd glibc
        libc.so.6 => /lib/libc.so.6 (0x4000e000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)





  Om kompileringen gr bra och visar "hej vrlden!" nr det krs s var
  installeringen framgngsrik.



  6.  Kompilera med det icke-primra libc.


  Ibland kommer du vilja anvnda ett alternativt bibliotek att kompilera
  dina program med. Detta avsnitt frklarar hur du kan gra detta.
  Kataloger och installeringsnamn r desamma som i exemplen i de tv
  fregende avsnitten. Kom ihg att ndra namnen fr att passa dina
  instllningar.


  6.1.  En varning angende anvndandet av icke-primra libc.


  Innan du kompilerar ngra program som anvnds i systemets bootprocess
  mste du tnka p att programmet lnkas dynamiskt och anvnds innan
  icke-rotpartitionerna monteras, s alla lnkade bibliotek mste finnas
  p rotpartitionen. Om du fljer installeringsprocessen i fregende
  avsnitt fr att installera glibc som ditt primra C-bibliotek s
  lmnas det gamla libc i /lib, allts p din rotpartition. Detta
  innebr att alla dina program fortfarande kommer att fungera d du
  bootar. Om dock /usr finns p en annan partition och du installerar
  glibc som testbibliotek i /usr/i486-linuxglibc2, s kommer inga nya
  program du kompilerar med glibc fungera frrn din /usr-partition
  monterats.


  6.2.  Kompilera program med ett test-glibc.


  Fr att kompilera ett program med ett test-installerat glibc mste du
  definiera om include-skvgarna, s att de pekar p include-filerna
  fr glibc. Genom att ange "-nostdinc" fr du kompilatorn att ignorera
  den vanliga skvgen.  "-I/usr/i486-linuxglibc2/include" gr att den
  hittar include-filerna fr glibc. Du mste ven ange include-filerna
  fr gcc, vilka finns i /usr/lib/gcc-
  lib/i486-linuxglibc2/2.7.2.2/include (frutsatt att du installerat
  test-biblioteket i i486-linuxglibc med gcc 2.7.2.2).

  Fr att lnka ett program med ett test-installerat glibc mste du ange
  korrekt gcc-setup. Detta gr du genom att ange parametern "-b
  i486-linuxglibc2".

  Fr de flesta program kan de ange dessa nya parametrar genom att lgga
  till dem till $CFLAGS och $LDFLAGS i Makefilen:


        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





  Om du anvnder ett configure-script s kan du ange $CFLAGS och
  $LDFLAGS som skal-variabler (genom att anvnda env/setenv fr csh/tsch
  eller set/export fr sh/bash osv.) innan du kr configure. Makefilerna
  som skapas p detta stt skall innehlla korrekta $CFLAGS och
  $LDFLAGS. Inte alla configure-scripts kommer ta hnsyn till skal-vari
  ablerna, s du br kolla och editera Makefilen fr hand efter att du
  krt configure.


  Om programmen du kompilerar endast anropar gcc (och inte cpp eller
  binutils direkt), s kan du anvnda fljande skal-program fr att
  slippa ange parametrarna varje gng:


        #!/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 "$@"





  Sedan kan du anvnda detta skal-program istllet fr "gcc" nr du kom
  pilerar.


  6.3.  Kompilera program med libc5 nr glibc r primrt bibliotek.


  Fr att kompilera ett program med dina gamla bibliotek, nr du har
  installerat glibc som ditt huvudbibliotek, s mste du stlla om
  include-skvgen till de gamla include-filerna. Att ange "-nostdinc"
  gr att de normala skvgarna negeras, och
  "-I/usr/i486-linuxlibc5/include" pekar p include-filerna fr libc5.
  Du mste ocks ange "-I/usr/lib/gcc-
  lib/i486-linuxlibc5/2.7.2.2/include" fr att f med de gcc-specifika
  include-filerna. Kom ihg att justera dessa skvgar i
  verensstmmelse med namnen p dina nya kataloger och din gcc-version.

  Fr att lnka ett program med ditt gamla libc mste du ange gcc-setup.
  Detta gr du med parametern "-b i486-linuxlibc5".

  Fr de flesta program kan du ange dessa nya alternativ genom att lgga
  till dem till $CFLAGS och $LDFLAGS i Makefilen:


        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





  Om du anvnder ett configure-script s kan du ange $CFLAGS och
  $LDFLAGS som skal-variabler (genom att anvnda env/setenv fr csh/tsch
  eller set/export fr sh/bash osv.) innan du kr configure. Makefilerna
  som skapas p detta stt skall innehlla korrekta $CFLAGS och
  $LDFLAGS. Inte alla configure-scripts kommer ta hnsyn till skal-vari
  ablerna, s du br kolla och editera Makefilen fr hand efter att du
  krt configure.

  Om programmen du kompilerar endast anropar gcc (och inte cpp eller
  binutils direkt), s kan du anvnda fljande skal-program fr att
  slippa ange parametrarna varje gng:


        #!/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 "$@"




  Sedan kan du anvnda detta skalprogram istllet fr "gcc" nr du kom
  pilerar.


  7.  Kompilera C++-program.


  Libg++ anvnder delar av math-biblioteket, s det lnkas till libm.
  Eftersom ditt existerande libg++ kommer kompileras med ditt gamla
  bibliotek, s mste du kompilera om libg++ med glibc eller skaffa en
  binrpaket. Den senaste kllkoden fr libg++, tillsammans med en binr
  lnkad med glibc (fr x86) hittar du p
  <ftp://ftp.yggdrasil.com/private/hjl/>.


  7.1.  Installera libg++ fr ett test-installerat glibc.


  Om du har installerat glibc som ett test-bibliotek s mste du
  installera filerna till katalogen du installerade glibc i (som t.ex.
  /usr/i486-linuxglibc2 i exemplen i fregende avsnitt). If du
  installera frn binrpaketet (vilket jag skulle rekommendera, eftersom
  jag aldrig har lyckats kompilera libg++ p detta stt), s mste du
  packa upp filerna till en temporr katalog och flytta alla
  usr/lib/-filer till <installerings-katalog>/lib/-katalogen,
  usr/include/-filerna till <installerings-katalog>/include/-katalogen
  (kom ihg att radera din include/g++-lnk frst!), och sedan
  usr/bin/-filerna till <installerings-katalog>/bin/-katalogen.


  7.2.  Installera libg++ fr glibc som primrt bibliotek.


  Om du har installerat glibc som ditt primra bibliotek s mste du
  frst flytta dina gamla libg++-filer till din gamla libc-katalog, om
  du fortfarande vill kunna kompilera g++-program med ditt gamla libc.
  Det enklaste sttet att gra detta r att installera en ny kopia av
  libg++, kompilerad med libc5 enligt fregende avsnitt, och sedan
  installera glibc-versionen p det vanliga sttet.


  7.3.  Kompilera C++-program med det icke-primra libc.


  Om du frsker kompilera C++-program med ett icke-primrt libc s
  mste du inkludera include-katalogen fr g++, vilken i exemplen ovan
  r /usr/i486-linuxglibc2/include/g++ (fr en test-installering av
  glibc2) eller /usr/i486-linuxlibc5/include/g++ (fr en installering av
  glibc2 som primrt bibliotek). Detta kan vanligtvis gras genom att
  lgga till $CXXFLAGS-variabeln:


        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







  8.  Rapportera buggar.


  Om du tror att biblioteket r buggigt, ls frst FAQen. Det kan vara
  s att andra har haft samma problem och att det finns ngon enkel
  lsning. Du br ocks lsa avsnittet "Recommended Tools to Install the
  GNU C Library" i INSTALL-filen, eftersom vissa buggar kan finnas i
  verktygen och inte i glibc.

  Om du hittat en bugg, s se till att det verkligen r en bugg. Ett bra
  stt att gra detta r att kolla om GNU C-biblioteket upptrder p
  samma stt som andra C-bibliotek. Om det gr det s har du antagligen
  fel och biblioteken har antagligen rtt (men inte med ndvndighet).
  Om inte s har skert biblioteken fel.

  G sedan till  <http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl> och
  ta en titt p bugg-databasen. Kolla s att problemet inte redan har
  rapporterats. Du br ocks titta p filen BUGS (vilken kommer med
  libc) fr att se efter om det r en knd bugg.

  Om du r sker p att du hittat en ny bugg, frsk avgrnsa den till
  det minsta mjliga testfallet som producerar detta problem. I C-
  bibliotekets fall behver du bara avgrnsa det till ett
  biblioteksfunktionsanrop, om det r mjligt. Detta br inte vara s
  svrt.

  Det sista steget, nr du har ett enkelt testfall r att rapportera
  buggen. Nr du rapporterar en bugg, skicka in testfallet, resultaten
  du ftt, resultaten du vntade dig, vad du tror felet kan vara (om du
  har kommit p ngot), vilken sorts system du har, versionerna av GNU
  C-biblioteket, GNU CC-kompilatorn och GNU Binutils som du anvnder.
  Inkludera ocks filerna config.status och config.make, vilka skapas d
  du kr configure; de kommer finnas i den katalog du stod i d du krde
  configure.

  Alla buggrapporter fr GNU C-biblioteket ska skickas med hjlp av
  skalprogrammet glibcbug, vilket kommer med GNU libc, till
  <bugs@gnu.org> (den ldre adressen  <bugs@gnu.ai.mit.edu> fungerar
  fortfarande), eller skickad genom webb-grnssnittet GNATS till
  <http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl>.

  Frslag och frgor ska skickas till mailinglistan p  <bugs-
  glibc@prep.ai.mit.edu>.  If du inte lser nyhetsgruppen gnu.bug.glibc
  s kan du prenumerera p listan genom att frga  <bug-glibc-
  request@prep.ai.mit.edu>.

  Var vnlig skicka INTE buggrapporter fr GNU C-biblioteket till <bug-
  gcc@prep.ai.mit.edu>. Den listan r till fr buggrapporter fr GNU CC.
  GNU CC och GNU C-biblioteket r separata entiteter vilka utvecklas av
  olika mnniskor.


  9.  Exempel p specs-fil.


  Nedan fljer ett exempel p en specs-fil fr glibc2, vilken anvnds av
  gcc vid kompilering och lnkning. Den br finnas i katalogen
  /usr/lib/gcc-lib/<ny system-katalog>/<gcc-version>. Om du kr ett
  x86-system s kan du antagligen kopiera det hr avsnittet direkt till
  filen.












   *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.  Diverse.



  10.1.  Vidare information.



  10.1.1.  Webb-sidor.



    FSF's GNU C Library Home Page
     <http://www.gnu.org/software/libc/libc.html>


    Using GNU Libc 2 with Linux <http://www.imaxx.net/~thrytis/glibc/>

    Installing glibc-2 on Linux <http://huizen.dds.nl/~frodol/glibc/>.

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


  10.1.2.  Nyhetsgrupper.



    comp.os.linux.development.system

    comp.os.linux.development.apps

    linux.dev.kernel

    gnu.bugs.glibc


  10.1.3.  Mailinglistor.



     Glibc 2 Linux discussion list.
        Denna lista r avsett fr diskussion mellan Linux-anvndare som
        installerat glibc2, det nya GNU C-biblioteket. mnena kan t.ex.
        vara kompatibilitesproblem och frgor om kompilering av kod i en
        Linux/glibc-milj.  Fr att prenumerera, skicka ett ebrev till
        Majordomo@ricardo.ecn.wfu.edu
        <mailto:Majordomo@ricardo.ecn.wfu.edu> med "subscribe glibc-
        linux <din epostadress> i sjlva meddelandet.


  10.2.  Tillknnagivanden.


  Det mesta av denna information r stulen frn GNU Libc web page
  <http://www.gnu.org/software/libc/libc.html> och frn Ulrich Dreppers
  <drepper@gnu.ai.mit.edu> glibc2-kungrelse och hans kommentarer.
  Andreas Jaeger <aj@arthur.rhein-neckar.de> bidrog med delar av
  avsnittet om att rapportera buggar.

  Fljande mnniskor har bidragit med information och respons p detta
  dokument:

    Allex <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>

  versttningar av detta dokument utfrs av:


    Kinesiska: Allex <allex@ms2.accmail.com.tw>

    Franska:  Olivier Tharan <tharan@int-evry.fr>

    Japanska:  Kazuyuki Okamoto <ikko-@pacific.rim.or.jp>



  10.3.  Respons.


  Frutom att jag skrivit denna HOWTO, hller i webb-sidan glibc 2 for
  Linux <http://www.imaxx.net/~thrytis/glibc> och anvnder glibc p min
  maskin, s har jag inget att gra med glibc-projektet. Jag r lngt
  ifrn kunnig p omrdet, men jag brukar frska hjlpa till d folk
  skicka mig ebrev med frgor. Jag vlkomnar alla former av respons,
  rttelser eller frslag som du har att erbjuda. Skicka dem till
  ejg3@cornell.edu <mailto:ejg3@cornell.edu>.


  10.4.  Upphovsrtt.

  Copyright (c) 1997 by Eric Green.  This document may be distributed
  under the terms set forth in the LDP license.





























