Következő Előző Tartalom

6. Fordítás a nem elsődleges libc-vel

Vannak olyan alkalmak, amikor nem az elsődleges programkönyvtárat szeretnéd használni fordításkor. Ez a rész azt írja le, hogy ezt hogyan valósítsd meg. A felhasznált könyvtár- és fájlnevek megegyeznek az előző részben használtakkal. Ne felejtsd el megváltoztani ezeket a neveket a telepítésednek megfelelően.

6.1 Figyelmeztetés, ha nem elsődleges C programkönyvtárat használsz

Mielőtt bármilyen olyan programot fordítanál, amit a linux a rendszer indulásakor használ (a nem-root partíciók felcsatolása előtt), ne felejtsd el, hogy ha a program dinamikusan linkelt, szüksége van a programkönyvtárakra a root partíción. Ha megfigyelted az előző részben leírt telepítést, hiába a glibc az új C programkönyvtár, a régi libc is megmaradt a /lib könyvtárban, ami a root partíción van. Ez azt jelenti, hogy a régi libc-vel összeszerkesztett programok továbbra is használhatók az indulási folyamat során. Ha viszont a /usr nem a root partíción van és a glibc-t teszt könyvtárként telepíted a /usr/i486-linuxglibc2 könyvtárba, minden új, a teszt könyvtárral fordított program működésképtelen lesz, amíg nincs felcsatolva a /usr könyvtárat tartalmazó partíció.

6.2 Programok fordítása teszt glibc-vel

Ahhoz, hogy egy programot a teszt glibc könyvtárral fordítsál, be kell állítanod az include könyvtárak és fájlok elérési útvonalait úgy, hogy azok a teszt glibc könyvtár include-jaira mutassanak. Ha a parancssoron megadod a "-nostdinc" kapcsolót, az törli a hivatkozásokat az alapértelmezett include elérési útvonalakat, a "-I/usr/i486-linuxglibc2/include" pedig megadja a glibc include fájlok helyét. Meg kell még adjad a gcc include fájljait, amik a /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include könyvtárban találhatók (persze akkor, ha 2.7.2.2-es gcc-t használsz és a teszt programkönyvtárat az i486-linuxglibc2 könyvtárba telepítetted).

Meg kell adjad ezeken kívül a gcc beállításait. Ezt megteheted a "-b i486-linuxglibc2" kapcsolóval.

A legtöbb programnál megadhatod ezeket a kapcsolókat a makefile $CFLAGS és $LDFLAGS opcióinál:

 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
 

Ha configure szkriptet használsz a fordítás előtt, állítsd be a $CFLAGS és $LDFLAGS környezeti változókat (csh/tcsh-ban használd az env/setenv parancsokat, sh/bash-ban használd a set/export-ot ) a configure futtatása előtt. Az így generált makefile-okban szerepelnie kell a megfelelő $CFLAGS és $LDFLAGS beállításoknak. Nem minden configure szkript olvassa ki a parancsértelmező környezetéből a változókat, ezért ellenőrizni kell a makefile-t, és kézzel javítani szükség esetén.

Ha a fordítandó program csak a gcc-t hívja meg (és nem egyenesen a cpp-t vagy a binutils-t), használhatod a következő szkriptet a kapcsolók megadására:

 #!/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 "$@"
 
Használd ezt a szkriptet fordításnál a "gcc" helyett.

6.3 Programok fordítása 5-ös libc-vel, ha a glibc az elsődleges programkönyvtár

Ha a régi libc könyvtárral akarsz programot fordítani és a glibc-t elsődleges könyvtárként telepítetted, vissza kell állítsad az include fájlok elérési útvonalát a régi include fájlokéra. Meg kell add a "-nostdinc" kapcsolót, ez törli az alapértelmezett beállításokat, majd a "-I/usr/i486-linuxlibc5/include" kapcsolóval be kell állítanod a libc5 include fájljainak az elérési útvonalát. Meg kell még adnod a "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" kapcsolót, amely a gcc specifikus include fájlok helyét adja meg. Ne felejtsd el, az itt megadott könyvtárneveket a saját rendszerednek megfelelően megváltoztatni (könyvtárnevek és gcc verzió).

Végül meg kell adjad a gcc beállításait, a "-b i486-linuxlibc5" kapcsolóval.

A legtöbb programnál megadhatod ezeket a kapcsolókat a makefile $CFLAGS és $LDFLAGS opcióinál:

 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
 

Ha configure szkriptet használsz a fordítás előtt, állítsd be a $CFLAGS és $LDFLAGS környezeti változókat (csh/tcsh-ban használd az env/setenv parancsokat, sh/bash-ban használd a set/export-ot ) a configure futtatása előtt. Az így generált makefile-okban szerepelnie kell a megfelelő $CFLAGS és $LDFLAGS beállításoknak. Nem minden configure szkript olvassa ki a parancsértelmező környezetéből a változókat, ezért ellenőrizni kell a makefile-t, és kézzel javítani szükség esetén.

Ha a fordítandó program csak a gcc-t hívja meg (és nem egyenesen a cpp-t vagy a binutils-t), használhatod a következő szkriptet a kapcsolók megadására:

 #!/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 "$@"
 
Használd ezt a szkriptet fordításnál a "gcc" helyett.


Következő Előző Tartalom