Nästa Föregående Innehållsförteckning

6. Kompilera med det icke-primära libc.

Ibland kommer du vilja använda ett alternativt bibliotek att kompilera dina program med. Detta avsnitt förklarar hur du kan göra detta. Kataloger och installeringsnamn är desamma som i exemplen i de två föregående avsnitten. Kom ihåg att ändra namnen för att passa dina inställningar.

6.1 En varning angående användandet av icke-primära libc.

Innan du kompilerar några program som används i systemets bootprocess måste du tänka på att programmet länkas dynamiskt och används innan icke-rotpartitionerna monteras, så alla länkade bibliotek måste finnas på rotpartitionen. Om du följer installeringsprocessen i föregående avsnitt för att installera glibc som ditt primära C-bibliotek så lämnas det gamla libc i /lib, alltså på din rotpartition. Detta innebär att alla dina program fortfarande kommer att fungera då du bootar. Om dock /usr finns på en annan partition och du installerar glibc som testbibliotek i /usr/i486-linuxglibc2, så kommer inga nya program du kompilerar med glibc fungera förrän din /usr-partition monterats.

6.2 Kompilera program med ett test-glibc.

För att kompilera ett program med ett test-installerat glibc måste du definiera om include-sökvägarna, så att de pekar på include-filerna för glibc. Genom att ange "-nostdinc" får du kompilatorn att ignorera den vanliga sökvägen. "-I/usr/i486-linuxglibc2/include" gör att den hittar include-filerna för glibc. Du måste även ange include-filerna för gcc, vilka finns i /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include (förutsatt att du installerat test-biblioteket i i486-linuxglibc med gcc 2.7.2.2).

För att länka ett program med ett test-installerat glibc måste du ange korrekt gcc-setup. Detta gör du genom att ange parametern "-b i486-linuxglibc2".

För de flesta program kan de ange dessa nya parametrar genom att lägga till dem till $CFLAGS och $LDFLAGS i Makefilen:

 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
 
Om du använder ett configure-script så kan du ange $CFLAGS och $LDFLAGS som skal-variabler (genom att använda env/setenv för csh/tsch eller set/export för sh/bash osv.) innan du kör configure. Makefilerna som skapas på detta sätt skall innehålla korrekta $CFLAGS och $LDFLAGS. Inte alla configure-scripts kommer ta hänsyn till skal-variablerna, så du bör kolla och editera Makefilen för hand efter att du kört configure.

Om programmen du kompilerar endast anropar gcc (och inte cpp eller binutils direkt), så kan du använda följande skal-program för att slippa ange parametrarna varje gång:

 #!/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 "$@"
 
Sedan kan du använda detta skal-program istället för "gcc" när du kompilerar.

6.3 Kompilera program med libc5 när glibc är primärt bibliotek.

För att kompilera ett program med dina gamla bibliotek, när du har installerat glibc som ditt huvudbibliotek, så måste du ställa om include-sökvägen till de gamla include-filerna. Att ange "-nostdinc" gör att de normala sökvägarna negeras, och "-I/usr/i486-linuxlibc5/include" pekar på include-filerna för libc5. Du måste också ange "-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include" för att få med de gcc-specifika include-filerna. Kom ihåg att justera dessa sökvägar i överensstämmelse med namnen på dina nya kataloger och din gcc-version.

För att länka ett program med ditt gamla libc måste du ange gcc-setup. Detta gör du med parametern "-b i486-linuxlibc5".

För de flesta program kan du ange dessa nya alternativ genom att lägga till dem till $CFLAGS och $LDFLAGS i Makefilen:

 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
 
Om du använder ett configure-script så kan du ange $CFLAGS och $LDFLAGS som skal-variabler (genom att använda env/setenv för csh/tsch eller set/export för sh/bash osv.) innan du kör configure. Makefilerna som skapas på detta sätt skall innehålla korrekta $CFLAGS och $LDFLAGS. Inte alla configure-scripts kommer ta hänsyn till skal-variablerna, så du bör kolla och editera Makefilen för hand efter att du kört configure.

Om programmen du kompilerar endast anropar gcc (och inte cpp eller binutils direkt), så kan du använda följande skal-program för att slippa ange parametrarna varje gång:

 #!/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 "$@"
 
Sedan kan du använda detta skalprogram istället för "gcc" när du kompilerar.


Nästa Föregående Innehållsförteckning