Ez a rész azt írja le, hogy hogyan telepítsd a 2-es libc-t teszt könyvtárként. Ha bármilyen programot fordítasz, azt a fordító a régi libc-vel szerkeszti össze, hacsak nem adod meg külön, hogy a teszt könyvtárat szeretnéd használni. Fordításkor az elérési útvonalak belekerülnek néhány fájlba, ezért forrásból kell telepítsd a könyvtárat.
Egy i586@133 gépen 64 MB RAM-mal, kb. 3 órába telik, amíg elkészül a teljes könyvtár a kiegészítőkkel. Egy erősen kihasznált i686@200-en ugyanez kb. fél órába kerül.
Ahhoz, hogy le tudd fordítani a forrást, ki kell csomagolnod azt az archívból. Erre a legjobb megoldás a következő:
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
Ez a glibc-2.0.6 könyvtárba csomagolja ki a linuxthreads, crypt és locale kiegészítőket, ahol a configure megtalálja őket.
A glibc-2.0.6 könyvtárba hozzál létre egy compile nevű könyvtárat, majd lépjél bele. Mindent ebben a könytárban fogsz csinálni, ez egyszerűsíti a takarítást. (A fejlesztők eddig nem törték magukat, hogy a 'make clean' tökéletesen működjön.)
mkdir compile
cd compile
Futtasd le a ../configure
szkriptet. Ha kiegészítő csomagokat is akarsz használni, meg kell adnod a --enable-add-ons kapcsolót, pl.: --enable-add-ons=linuxthreads,crypt,localedata.
Ki kell válaszd a célkönyvtárat, ahova a könyvtárat telepíteni fogod.
/usr/i486-linuxglibc2 egy jó választás. Ehhez a configure paraméterei a következők:
../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
A fordításhoz és ellenőrzéshez írd be a következőket:
make
make check
Ha a 'make check' sikeresen lefutott, telepítsd a könyvtárat root felhasználóként (még mindig a compile
könyvtárból):
make install
ld.so
-ról a /lib/ld-linux.so.2
-ra mutat:
ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
Ez az egyetlen könyvtár, amelynek rögzített a helye, miután egy programhoz hozzá lett linkelve,
és ha a /lib
könyvtárban létrehozol egy kapcsot hozzá, akkor később könnyebb lesz
áttérni a glibc-re, mint elsődleges C könyvtárra, amikor megjelenik a stabil verziója./etc/ld.so.conf
-ot. A fájl végére be kell írnod a lib könyvtár elérési útvonalát, amiben az új programkönyvtárak vannak. Valahogy így fog kinézni: <prefix>/lib
, tehát pl. /usr/i486-linuxglibc2/lib
a fenti esetben.
A /etc/ld.so.conf
fájl elmentése után futtasd le a következő parancsot:
ldconfig -v
A telepítés utolsó lépése a /usr/lib/gcc-lib
frissítéséből áll. Ez azért szükséges, hogy a gcc tudja használni az új programkönyvtárakat.
Első körben duplikálni kell a gcc-t. Hogy megtudd melyik az éppen működő ggc konfiguráció, használd a gcc -v kapcsolóját:
% gcc -v
Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
gcc version 2.7.2.2
Ebben az esetben az i486-unknown-linux a rendszer típusa, és a 2.7.2.2 a gcc verziószáma.
Át kell másolnod a /usr/lib/gcc-lib/<system>
könyvtárat az új teszt rendszer könyvtárába:
cd /usr/lib/gcc-lib/
cp -r i486-unknown-linux i486-linuxglibc2
Lépjél be az új teszt rendszer könyvtárába, majd a verziószámmal jelölt könyvtárba,
cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
ezek után módosítsd a specs
fájlt, ami ebben a könyvtárban található.
Írd át a /lib/ld-linux.so.1
-t /lib/ld-linux.so.2
-ra. Ha ez megvan, törölj ki minden hivatkozást a %{...:-lgmon}
-ra a fájlból, mert a glibc nem használja a gmon könyvtárat.
Találsz egy példa spec fájlt a
Példa specs fájl fejezetben.
Kapcsokat kell létrehoznod az új include könyvtárban, amik egyéb include könyvtárakra mutatnak:
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
Előfordulhat, hogy vannak más programkönytáraid, mint pl. az ncurses, ezeknek a fejlécfájljait is ebből a könytárból kell elérjed. Ezeket a fájlokat át kell másolnod vagy kötnöd a /usr/include
könyvtárból. (Lehetnek olyan programkönyvtárak is, amiket újra kell fordítanod, hogy a glibc2-vel működni tudjanak. Ebben az esetben egyszerűen fordítsd le őket, és a telepítésnél add meg a /usr/i486-linuxglibc2
könyvtárat.)
A programkönyvtár teszteléséhez, hozzál létre egy glibc.c fájlta következőkkel:
#include <stdio.h>
main()
{
printf("hello world!\n");
}
Fordítsd le a következő opciókkal: "-b <base install directory> -nostdinc -I<install directory>/include -I/usr/lib/gcc-lib/<new system dir>/<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
Az ldd parancs segítségével ellenőrizd, hogy a fordító tényleg a glibc2-vel szerkesztette-e össze a programocskát és nem a régi libc-vel:
% 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)
Ha a programot sikeresen le tudtad fordítani, a gcc az új glibc2-höz szerkesztette és amikor elindítod, azt írja ki, hogy "hello world!", a telepítés sikeres volt.