Következő Előző Tartalom

4. Telepítés teszt könyvtárként

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.

4.1 Fordítás és telepítés

Előkövetelmények

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.

A forrás kicsomagolása

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.

Beállítások

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
 

Fordítás és telepítés

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
 

4.2 A "dynamic loader" frissítése

  1. Hozzál létre egy kötést, ami az új 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.
  2. Módosítsd a /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
     
    

4.3 Beállítás a gcc-hez

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.

4.4 A fejlécfájlokra mutató kapcsok frissítése

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

4.5 A feltelepített programkönyvtár tesztelése

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.


Következő Előző Tartalom