6.11. Glibc-2.3.4

Balíček Glib obsahuje hlavní knihovnu C.Tato knihovna navízí základní rutiny pro obsasovaní paměti,hledání adresářů,otevírání a zacírání souborů,čtení a zápis do souborů,náhradu řetezce,pattern matching,aritmetiku a podobně.

Průměrný čas kompilace: 12.3 SBU
Potřebné volné místo: 476
Instalace závisí na: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, and Texinfo

6.11.1. Instalce Glibc

O tomto balíčku je známo,že má problémy,pokud jsou jeho výchozí optimalizační příznaky(včetně -march a -mcpu voleb)změněné.Pokud nějaké proměnné prostředí přepisují tyto výchozí optimalizace jako CFLAGS a CXXFLAGS,odstraňte je při kompilaci Glibc.

Kompilační systém Glibc je samostatný a nainstaluje se správně i když specs soubor kompileru stále odkazuje na /tools.Specs a linker nemůžete přizpůsobit před instalací Glibc,protože testy Glibcc autoconfu selžou a naruší výslednou čistou kompilaci.

Balíček linuxthreads obsahuje manuálové stránky pro vláknové knihovny instalované Glibc.Rozbal tento balíček ve složce se zdroji Glibc:

tar -xjvf /sources/glibc-linuxthreads-2.3.4.tar.bz2

Glib má dva testy,které způsobí selhání pod jádrem 2.6.11.x Problém byl identifikován v samotných testech,ani v libc ani v jádře.Tento patch problém odstraní:

patch -Np1 -i ../glibc-2.3.4-fix_test-1.patch

Dokumtace Glibc doporučuje kompilaci Glibc mimo zdroje ve oddělené kompilační složce:

mkdir ../glibc-build
cd ../glibc-build

Připravte Glibc ke kompilaci:

../glibc-2.3.4/configure --prefix=/usr \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc

Význam nových konfiguračních voleb:

--libexecdir=/usr/lib/glibc

Toto mění umístění programu pt_chown,z výchozího /usr/libexec na /usr/lib/glibc.

Zkompilujte balíček:

make
[Important]

Important

V této sekci jsou testy Glibc kritické.Za žádných okolností je nevynechávejte.

Otestujte výsledky:

make check

Testy Glibc jsou velmi závislé na některých funkcích hostiteslského systému,zvláště jádra.Hlavně,testy Glibc by měly vžždycky proběhnout.Přesto,ale za určitých podmínek,nejsou vyloučené některé chyby.Toto je seznam nejčastějších chyb:

  • Testy math někdy selžou,pokud neběží na relativně novém Intelu,nebo AMD.Je známo,že k selhání také mohou vést jisté optimalizační nastavení.

  • Test gettext někdy selže díký problémům hostitele.Přesný důvod ještě není znám.

  • Pokud jste měli připojený oddíl LFS s volbou noatime,test atime selže.Jak bylo řečeno v Section 2.4, “Připojení nového odílu”,nepoužívejte parametr noatime,když kompilujete LFS.

  • Jestli spouštíte testy ne starším a pomalejším hardware,některé testy mohou selhat,protože jim vyprší čas.

Ačkoliv je to jenom nedůležitá zpráva,při instalaci Glib se objeví varování o chybějícím souboru /etc/ld.so.conf.Zabraňte tomu pomocí:

touch /etc/ld.so.conf

Nainstalujte balíček:

make install

Lokalizace,která umožňuje systému odpovídat v rozdílných jazycích nebyla předcházejícím příkazem nainstalována.Nainstalujete jí pomocí:

make localedata/install-locales

Pokud chcete ušetřit čas,alternativa k předchozímu příkaza(který generuje a instaluje všechny lokalizace,které Glibc obsahuje) je instalace pouze těch lokalizací,které jsou potřebné.Toho můžete dosáhnout pomocí příkazu localedef.Informace o tomto příkazu se nacházejí v souboru INSTALL ve zdrojích Glibc.Jakkoli,několik lokalizací je důležitých pro testy dalších balíčků,zvláště testy libstdc++ z GCC.Místo install-locales můžete použít následující příkazy,abyste nainstalovali pro úspěšné testy minimální sadu lokalizací:

mkdir -p /usr/lib/locale
localedef -i de_DE -f ISO-8859-2 de_DE
localedef -i de_DE@euro -f ISO-8859-25 de_DE@euro
localedef -i en_HK -f ISO-8859-2 en_HK
localedef -i en_PH -f ISO-8859-2 en_PH
localedef -i en_US -f ISO-8859-2 en_US
localedef -i es_MX -f ISO-8859-2 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-2 fr_FR
localedef -i fr_FR@euro -f ISO-8859-25 fr_FR@euro
localedef -i it_IT -f ISO-8859-2 it_IT
localedef -i ja_JP -f EUC-JP ja_JP

Některé lokalizace nainstalované příkazem make localedata/install-locales nejsou dobře podporovány některými aplikacemi v knihách LFS a BLFS.Z důvodů různých problémů,které se ukázaly díky programátorům aplikací,kteří nepředpokládali chyby v těchto lokalizacích,LFS nemůže používat lokalizace,které používají multibytovou znakovou sadu(včetně UTF-8),nebo psaní zprava doleva.Hodně neoficiálních a nestabilních patchů řeší tyto problémy,ale vývojaři LFS se rozhodli nepodporovat tyto velmi komplexním lokalizace.Toto se týká lokalizací ja_JP a fa_IR—nainstalují se pouze pro testy GCC a Gettextu a program watch(část balíčku Procps) s nimi nebude správně pracovat.Hodně pokusů o vyřešení těchto problémů je dokumentováno v tipech orientovaných na internacionalizaci.

Zkompuilujte manuálové stránky linuxthreads,které jsou velkou referencí na vláknové API(aplikovatelné rovněž na NPTL):

make -C ../glibc-2.3.4/linuxthreads/man

Nainstalujte tyto stránky:

make -C ../glibc-2.3.4/linuxthreads/man install

6.11.2. Konfigurace Glibc

Je třeba vytvořit soubory /etc/nsswitch.conf,i když Glibc nabízí výchozí,pokud tento soubor chybí,nebo je poškozen,ale Glibc pak nepracuje v síťovém prostředí správně.Také je třeba nakonfigurovat časovou zónu.

Pomocí následujícího příkazu vytvořte nový soubor /etc/nsswitch.conf:

cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf

passwd: files
group: files
shadow: files

hosts: files dns
networks: files

protocols: files
services: files
ethers: files
rpc: files

# End /etc/nsswitch.conf
EOF

Abyste odhalili lokální časovou zónu,spusťte následující skript:

tzselect

Poté co odpovíte na několik otázek ohledně umístění,skript vypíše jméno časové zóny(např EST5EDT nebo Canada/Eastern).Poté vytvořte soubor /etc/localtime pomocí:

cp --remove-destination /usr/share/zoneinfo/[xxx] \
    /etc/localtime

Nahraďte [xxx] za jméno časové zóny,které jste získali pomocí příkazu tzselect (např. Canada/Eastern).

Význam volby cp:

--remove-destination

To je nutné pro odstranění již existujícího symbolického odkazu.Důvod pro kopírování souboru místo použití odkazu,zahrnuje situaci,kdy je /usr,na jiném oddílu.Toto může být důležité,pokud bootujete vo jednouživatelského módu.

6.11.3. Konfigurace dynamického zavaděče

Ve výchozím stavu,dynamický zavaděč (/lib/ld-linux.so.2) hledá dynamické knihovny v adresářích /lib a /usr/lib.Pokud existují ještě další adresáře,musíte přidat do souboru /etc/ld.so.conf,aby je dynamický zavadeč našel.Další dva adresáře,které obvykle obsahují knihovny jsou /usr/local/lib a /opt/lib,proto je přidejte do vyhledávací cesty dynamického zavaděče.

Nový soubor /etc/ld.so.conf vytvořte pomocí:

cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF

6.11.4. Obsah Glibc

Nainstalované programy: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump, and zic
Nainstalované knihovny: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so, and libutil.[a,so]

Krátký popis

catchsegv

Může být použito pro vytvoření stopy,pokud program skončil se segmentační chybou.

gencat

Generuje katalogy zpráv

getconf

Zobrazuje hodnoty systémových konfiguračních hodnot pro specifické proměnné systému souborů

getent

Zobrazuje záznamy z administrační databáze

iconv

Provádí konverze mezi znakovými sadami

iconvconfig

Tvoří rychlestartující modul konfiguračních souborů iconv

ldconfig

Konfiguruje běh dynamického linkeru

ldd

Vypisuje,které sdílené knihovny jsou potřebné programem,nebo sdílénou knihovnou

lddlibc4

Pomáhá ldd s objektovými soubory

locale

Říká kompileru jestli má povolit,nebo zakázat lokalizaci POSIX pro vestavěné operace

localedef

Kompiluje specifikace lokalizací

mtrace

Čte a interpretuje soubory paměťových stop a zobrazuje souhrn v čitelné podobě

nscd

Démon,který nabízí cache pro nejobvyklejší jmenné požadavky

nscd_nischeck

Kontroluje jestli je potřebný bezpečnostní mód pro vyhledávání NIS+

pcprofiledump

Vypíše informace generované PC profilováním

pt_chown

Pomocný program pro grantpt k nastravené vlastníka,skupiny a přístupových oprávnění pro slave pseudo terminal

rpcgen

Generuje kód C pro implenetnaci Remote Procecure Call (RPC) protocol

rpcinfo

Provádí požadavek RPC na RPC server

sln

Statcky linkovaný program ln

sprof

Čte a zobrazuje profilová data sdílených objektů

tzselect

Ptá se uživatele na umístění systému a vypíše popis odpovídající časové zóny

xtrace

Stopuje spuštěný program,zobrazením právě spuštěné funkce

zdump

Vypisuje časové zóny

zic

Kompiler časové zóny

ld.so

Pomocný program pro spustitelné sdílené knihovny

libBrokenLocale

Požíváno programy jako Mozilla,pro vyřešení špatné lokalizace

libSegFault

Handler segmentačního signálu

libanl

Knihovna vyhledávání asynchronního jména

libbsd-compat

Nabízí přenositelnost potřebnou pro spuštění programů Berkey Software Distribution (BSD) pod Linuxem

libc

Hlavní knihovna C

libcrypt

Kryptografická knihovna

libdl

Knihovna rozhraní dynamického linkování

libg

Knohovna runtime pro g++

libieee

Knihovna pohyblivé desetinné čárky Institute of Electrical and Electronic Engineers (IEEE)

libm

Matematická knihovna

libmcheck

Obsahujé kód spouštěný při bootu

libmemusage

Použiváno memusage ke sběru informací o paměti použité prohramem

libnsl

Knihovna síťových služeb

libnss

Knihovny Name Service Switch obsahující funkce pro rozlišení jmen,uživatelských jmen,skupinových jmen,aliasů,služeb,protokolů,atd.

libpcprofile

Obsahuje profilovací funkce použité pro stopování průměrného času CPU stráveném na určitých řádcích zrojového kódu

libpthread

Knihovna vláken POSIX

libresolv

Obsahuje funkce pro tvorbu,posílání a iterpretování paketů z doménových jmenných serverů Internetu

librpcsvc

Obsahuje funce nabízené různými službami RPC

librt

Obsahuje funce nabízené nejvíce zařízeními specifikované v POSIX.1b Realtime Extension

libthread_db

Obsahuje funkce užitečné pro kompilaci debuggerů pro multi-vláknové programu

libutil

Obsahuje kód pro “standardní” funce používané v rozdílných Unixových utilitách