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ě.
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/glibcVýznam nových konfiguračních voleb:
Toto mění umístění programu pt_chown,z výchozího /usr/libexec na /usr/lib/glibc.
Zkompilujte balíček:
make
![[Important]](../images/important.png)
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
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/localtimeNahraďte [xxx] za jméno časové zóny,které jste získali pomocí příkazu tzselect (např. Canada/Eastern).
Význam volby cp:
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.
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