Detta avsnitt tar upp installeringen av glibc 2 som ett test-bibliotek. Allt du kompilerar kommer länkas med dina existerande bibliotek om du inte ger några extraparametrar för att länka med de nya biblioteken. Det verkar som att sökvägarna kompileras in i en hel del filer, så du gör antagligen bäst i att installera biblioteket från källkod.
På en i586@133 med 64 MB RAM tar det runt 3 timmar att kompilera med fullständiga bibliotek och tillägg. På en laddad i686@200 tar det runt en halvtimme.
Du måste packa upp källkoden från arkivet så att du kan kompilera den. Det bästa sättet att göra 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-katalogerna i glibc-2.0.6-katalogen där configure kan hitta
dessa tillägg.
I glibc-2.0.6-katalogen ska du skapa en katalog som heter compile och cd-a till den. Allt arbete kommer göras i denna katalog, vilket förenklar städningen. (Utvecklarna har inte brytt sig speciellt mycket om att göra 'make clean' perfekt än.)
mkdir compile
cd compile
Kör ../configure
. För att använda tilläggspaketen måste du
ange dessa med --enable-add-ons,
t.ex. --enable-add-ons=linuxthreads,crypt,localedata. Du måste även
välja en katalog att installera i. /usr/i486-linuxglibc2 är ett bra
val. configure-raden för detta blir:
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
För att kompilera och verifiera, kör:
make
make check
Om 'make check' går bra så kan du installera biblioteket:
make install
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
länkas, och att använda en länk i /lib
gör det lättare att
uppgradera till glibc som ditt primära C-bibliotek när den stabila
versionen ges ut. /etc/ld.so.conf
. Du måste, i slutet av filen,
lägga till sökvägen till lib-katalogen där 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 köra
ldconfig -v
Det sista steget i installeringen är att uppdatera
/usr/lib/gcc-lib
, så att gcc vet hur det ska använda de nya
biblioteken. Först måste du ta en kopia av de existerande
inställningarna. För att ta redan på vilken konfigurering du har för
tillfället kan du använda 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 måste kopiera /usr/lib/gcc-lib/<system>
till den nya test-systemkatalogen:
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 måste
också radera alla uttryck %{...:-lgmon}
i filen, eftersom
glibc inte använder gmon-biblioteket för "profiling". Ett exempel på
en specs-fil kan du hitta i avsnittet
Exempel på specs-fil.
Du måste skapa länkar 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å hända att du har andra bibliotek, såsom ncurses, som
behöver ha sina header-filer i denna katalog. Du bör kopiera eller
länka filerna från /usr/include
. (Vissa bibliotek kan behöva
kompileras om med glibc2 för att fungera med det. I dessa fall är det
bara att kompilera och installera paketen i
/usr/i486-linuxglibc2
.)
För att testa installeringen, skapa följande program i filen glibc.c:
#include <stdio.h>
main()
{
printf("hej världen!\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
Använd ldd för att verifiera att programmet länkades 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, länkarna stämmer och det visar "hej
världen!" när det körs så har installeringen lyckats.