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