Sistemul de construire a pachetelor Glibc este autonom și pachetul va fi instalat perfect, chiar dacă fișierul cu specificațiile compilatorului și linkerul încă indică directorul / tools. Specificațiile și link-ul nu trebuie modificate înainte de instalarea pachetului Glibc, deoarece testele Glibc autoconf nu reușesc și, prin urmare, nu veți putea obține o construcție curată a pachetului.
Când se execută comanda make install. un script numit test-installation.pl. va efectua un mic test pentru a verifica curățenia instalației pentru noua noastră bibliotecă Glibc. Cu toate acestea, deoarece setul nostru de instrumente încă indică directorul test-installation.pl. Acest test se va desfășura pe biblioteca greșită Glibc. Putem forța scriptul să verifice biblioteca Glibc pe care tocmai l-am instalat, după cum urmează:
DL = $ (readelf -l / bin / sh | sed N 's @ * interpreteze * / instrumente \ (* \)] $ @ \ 1 @ p ...') s“Sed -i | libs -o | libs -L / usr / lib -Wl, -dynamic-linker = $ DL o- | " \ scripts / test-installation.plunset DL
În plus, există o eroare în scriptul test-installation.pl, în urma căreia se face o încercare de a compune un program de testare cu o bibliotecă care nu este instalată cu comanda make install. Rulați următoarea comandă sed pentru a repara acest lucru:
sed-i-e / "db1" / \\ $ nume "nss_test1" / "scripts / test-installation.pl
În scriptul ldd. executat în shell, folosește sintaxa specifică pentru Bash. În cazul în care un alt interpret este instalat, de exemplu, / bin / sh. modificați programul de interpretare implicit în / bin / bash așa cum este descris în capitolul Shells din cartea BLFS:
sed-i | | BASH @ | / bin / bash | ' elf / ldd.bash.in
Corectați eroarea pe care nu este permisă construirea pachetului Glibc utilizând compilatorul GCC-4.5.2:
patch -Np1 -i. /glibc-2.13-gcc_fix-1.patch
Corectați eroarea de dezechilibrare a stivei care apare în anumite circumstanțe:
SED -i '195213 s / PRIVATE_FUTEX / FUTEX_CLOCK_REALTIME /' \ nptl / sysdeps / unix / SysV / linux / x86_64 / pthread_rwlock_timedlock.S
Documentația Glibc vă recomandă să colectați pachetul Glibc într-un director separat pentru asamblare, și nu în directorul sursă:
mkdir -v. / glibc-buildcd. / glibc-build
Ca și în capitolul 5, pentru mașinile de tip x86, adăugați steagurile necesare pentru compilator la variabila CFLAGS. Aici, de asemenea, pentru compilatorul gcc, sunt specificate modurile de optimizare a bibliotecii, care măresc viteza de compilare (-pipe) și măresc performanța pachetului (-O3).
Pregătiți pachetul Glibc pentru compilare:
/glibc-2.13/configure --prefix = / usr \ --disable profil --enable-add-on-uri \ --enable-kernel = 2.6.22.5 --libexecdir = / usr / lib / glibc
Explicarea parametrilor noi de configurare:
Important În această secțiune, administrarea unei suite de testare pentru Glibc este considerată importantă. Nu ratați în niciun caz.
Înainte de a efectua testele, copiați fișierul din arborele sursă în arborele ansamblului nostru pentru a preveni o serie de încercări nereușite, apoi verificați rezultatele:
cp -v. /glibc-2.13/iconvdata/gconv-modules iconvdatamake -k verifica 2> 1 | tee glibc-check-loggrep Eroare glibc-check-log
Veți vedea probabil eșecul așteptat (ignorat) al testului posix / annexc. În plus, suita de testare pentru Glibc este oarecum dependentă de sistemul gazdă. Mai jos este o listă cu cele mai frecvente întrebări:
- Uneori testează nptl / tst-clock2. nptl / tst-attr3 și rt / tst-cpuclock2 nu trec. Motivul nu este clar, dar există indicii că problemele de testare pot fi cauzate de un timp de execuție scurt.
- În unele cazuri, testele matematice nu reușesc și atunci când sunt efectuate pe sisteme în care procesorul nu este un Intel relativ nou sau un procesor original AMD adecvat.
- Dacă ați instalat o partiție LFS cu parametrul noatime. testul nu va trece. După cum se menționează în secțiunea 2.4 "Montarea unei noi partiții", nu utilizați parametrul noatime. când construiți un sistem LFS.
- Când rulează pe hardware vechi sau lent sau într-un sistem care este încărcat, unele teste pot eșua, deoarece sunt depășite depășirile. Modificați comanda de verificare a mărcii și setați această valoare la TIMEOUTFACTOR, ceea ce va ajuta la eliminarea acestor erori (de exemplu, TIMEOUTFACTOR = 16 check make -k).
În etapa de instalare, pachetul Glibc se va plânge de fișierul /etc/ld.so.conf lipsă. Acest mesaj este inofensiv; Îl puteți împiedica să apară astfel:
Comanda de mai sus nu stabilește locale, din cauza cărora răspunsurile sistemului pot fi emise într-o altă limbă. Nu sunt necesare localnici, dar dacă unele dintre ele lipsesc, unele cazuri de testare pot fi ignorate în pachetele de pachete de testare care vor fi instalate în viitor.
localizări individuale pot fi instalate cu ajutorul programului localedef. De exemplu, prima comandă este localedef. de mai jos, combină locale specifice pentru un set independent de date / usr / share / i18n / localizări / cs_CZ tabelul de mapare a simbolurilor /usr/share/i18n/charmaps/UTF-8.gz și adaugă rezultatul la fișierul / usr / lib / locale / locale-arhiva. Următoarele instrucțiuni vor instala setul minim de locații necesare pentru îndeplinirea optimă a unui set de teste:
mkdir -pv / usr / lib / localelocaledef cs_CZ -f UTF -I-8 cs_CZ.UTF-8localedef de_DE -f ISO -i-8859-1 de_DElocaledef de_DE @ euro -I -F ISO-8859-15 de_DE @ eurolocaledef -i de_DE -f UTF-8 de_DE.UTF-8localedef en_HK -f ISO -i-8859-1 en_HKlocaledef en_PH -f ISO -i-8859-1 en_PHlocaledef ro_ -f ISO -i-8859-1 en_USlocaledef ro_ -f UTF -i -8 en_US.UTF-8localedef es_MX -f ISO -i-8859-1 es_MXlocaledef fa_IR -f UTF -I-8 fa_IRlocaledef fr_FR -f ISO -i-8859-1 fr_FRlocaledef fr_FR @ euro -I -F ISO-8859-15 fr_FR @ eurolocaledef fr_FR -f UTF -I-8 fr_FR.UTF-8localedef it_IT -f ISO -i-8859-1 it_ITlocaledef ja_JP -f EUC -i-JP ja_JPlocaledef tr_TR -f UTF -I-8 tr_TR.UTF-8localedef - i zh_CN -f GB18030 zh_CN.GB18030
În plus, setați locația pentru țara, limba și setul de caractere.
Sau instalați imediat toate localizări enumerate în glibc-2.13 / localedata / SUPPORTED (conține toate setările locale enumerate mai sus și multe altele) fișierul, folosind una din următoarele localizări:
Apoi, cu comanda localedef, creați și instalați localizări care nu sunt specificate în fișierul glibc-2.13 / localedata / SUPPORTED. în cazul puțin probabil că aveți nevoie de ele.