Instalowanie Glibc-2.3.2

Estimated build time:           11.8 SBU
Estimated required disk space: 800 MB

Zawartość Glibc

Glibc jest biblioteką C dostarczającą funkcje systemowe i podstawowe funkcje, takie jak open, malloc, printf, etc. Używają jej wszystkie programy linkowane dynamicznie.

Instalowane programy: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump oraz zic

Instalowane biblioteki: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, 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]

Zależności Instalacyjne Glibc

Glibc zależy od: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Instalacja Glibc

Zanim zaczniesz instalować Glibc, musisz wejść do katalogu (cd) glibc-2.3.2 i rozpakować w nim Glibc-linuxthreads, a nie w katalogu, w któym masz zwyczaj rozpakowywania źródeł.

Uwaga: W tym rozdziale uruchomimy zestaw testów dla Glibc. Warto zaznaczyć, że wykonanie tych testów  Glibc uważa się za mniej ważne niż wykonanie ich w Rozdziale 6.

Powszechnie znane jet złe działanie tego pakietu jeśli zmieni się jego domyslne flagi optymalizacji ( z opcjami -march i -mcpu włącznie). Dlatego, jeśli zdefiniowałaś jakiekolwiek zmienne środowiskowe, które zasłaniają (nadpisują) wartości domyślne dla optymalizacji, takie jak CFLAGS i CXXFLAGS, to zalecamy ich wyłączenie lub zmianę wartości na czas budowy Glibc.

Przeda wszystkim, kompilacja Glibc w jakikolwiek inny sposób, niż opisujemy w tej książce to wystawianie na ryzyko stabilności twojego systemu.

Chociaż to niegroźne, podczas instalacji Glibc zobaczysz komunikat narzekający na brak /tools/etc/ld.so.conf. To  męczące ostrzeżenie naprawisz za pomocą:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Glibc ma również problemik przy kompilowaniu z GCC 3.3.1. Aby to naprawić zastosuj łatkę:

patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch

Dokumentacja Glibc zaleca budowanie Glibc pozaj katalogiem źródłowym, w specjalnym katalogu budowy glibc-build:

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

Dalej przygotowujemy Glibc do kompilacji:

../glibc-2.3.2/configure --prefix=/tools \
--disable-profile --enable-add-ons \
--with-headers=/tools/include \
--with-binutils=/tools/bin \
--without-gd

Znaczenie tych opcji skryptu configure:

Na tym etapie możesz zobaczyć następujące ostrzeżenie:

configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

"Brakuje następujących dodatkowych programów, lub mają niekompatybilne wersje: "
Brak lub niekompatybilność programu msgfmt jest, ogólnie biorąc,  nieszkodliwa, ale uważa się, że może być przyczyną problemów przy wykonywaniu zestawu testów.

Skompiluj pakiet:

make

Uruchom zestaw testów:

make check

Zestaw testowy Glibc w dużym stopniu zależy od pewnych funkcji twojego systemu macierzystego, szczególnie od jądra. W dodatku, cechy środowiska hosta (systemu macierzystwgo) mogą niekorzystnie wpływać na niektóre z testów w niniejszym rozdziale. Oczywiście nie sprawi to problemu, jeśli uruchomisz zestaw testowy Glibc w środowisku chroot z Rozdziału 6. W ogóle, zestaw testowy powinien zawsze przejść. Jednak, jak wspomniano wyżej, w pewnych okolicznościach nie da się uniknąć pewnych niedociągnięć. Oto lista przypadków najpowszechniejszych, których powinniśmy się obawiać:

Podsumowując, nie przejmuj się zbytnio, jeśli zestaw testowy Glibc w tym rozdziale nawala.  Tylko test Glibc z Rozdziału 6 jest niezbędny, więc ten właśnie chcemy koniecznie widzieć wykonany pomyślnie. Miej jednak na uwadze, że nawet w Rozdziale 6 mogą wyjść niektóre  niepowodzenia -- na przykład testy math. Gdyb zauważysz błąd testu (failure), zapisz to i kontynuuj przez ponowne make check. Zestaw testowy powinien podjąć działanie w miejscu, gdzie wyszedł i okntynuować. Możesz pozbyć się tych zatrzymań i wznowień za pomocą make -k check. Jednak, jeśli tak zrobisz, upewnij się, że zapisałaś komunikaty z wyjścia, żebyś mogła przejrzeć ten plik logów (log file) i sprawdzić ogólną liczbę niepowodzeń.

Teraz zainstaluj ten pakiet:

make install

W różnych krajach i kulturach są różne reguły dotyczące komunikacjiDifferent countries and cultures have varying conventions for how to communicate. Różne kraje i kultury mają odmienne ustalenia dotyczące komunikowania się. Te ustalenia sięgają od bardzo prostych, jak format przedstawienia daty i czasu, aż po bardzo złożone, jak język mówiony. Umiędzynarodowienie ("internationalization") programów GNU działa dzięki zastosowaniu lokalizacji (locales). Zainstalujemy teraz lokalizację  Glibc:

make localedata/install-locales

Zamiast wykonywać powyższą komendę, można zainstalować wyłącznie wybrane przez ciebie lokalizacje. Osiągniesz to z pomocą komendy localedef. Informacje o niej znajdziesz w pliku INSTALL w źródłach glibc-2.3.2. Jest jednak pewna liczba loikalizacji szczególnie ważnych do testowania pakietów w przyszości, szczególnie testy libstdc++ z GCC. Następujące instrukcje zainstalują minimalny zestaw lokalizacji, niezbędny żeby testy wykonały się. Możesz ich użyć zamiast powyższej komendy install-locales.

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP