Linux From Scratch: Version 5.0 | ||
---|---|---|
Zurück | Kapitel 6. Installieren der grundlegenden System Software | Weiter |
Geschätzte Kompilierzeit: 12.3 SBU Ungefähr benötigter Festplattenplatz: 784 MB |
Glibc ist die C Bibliothek, sie stellt Systemaufrufe und grundlegende Funktionen wie open, malloc, printf usw. zur Verfügung. Die C Bibliothek wird von allen dynamisch gelinkten Programmen verwendet.
Installierte Programme: 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 und zic
Installierte Bibliotheken: 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 und libutil.[a,so]
Glibc ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.
Das Glibc Installatinssystem ist sehr eigenständig und installiert perfekt, selbst wenn unsere Compiler Specs Datei und der Linker immer noch auf /tools zeigen. Wir können die Specs Datei und den Linker nicht vor der Installation von Glibc anpassen, weil die Glibc Autoconf Tests dann falsche Resultate ergeben würden.
Anmerkung: Die Test-suite von Glibc in diesem Abschnitt wird als kritisch betrachtet. Wir raten, sie unter keinen Umständen zu überspringen.
Bevor sie mit dem kompilieren von Glibc beginnen, denken sie daran Glibc-linuxthreads in dem glibc-2.3.2 Verzeichnis zu entpacken, und setzen sie alle Umgebungsvariablen zurück die die standard Optimierungen übergehen würden.
Auch wenn es nur eine harmlose Nachricht ist, die Installationsphase von Glibc wird sich über die fehlende /etc/ld.so.conf Datei beschweren. Beheben sie diese störende Warnung mit:
touch /etc/ld.so.conf |
Dann wenden sie den gleichen Patch an den wir schon früher verwendet haben:
patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch |
Die Glibc Dokumentation empfiehlt, Glibc nicht im Quellenverzeichnis, sondern stattdessen in einem dedizierten Kompilierverzeichnis zu bauen:
mkdir ../glibc-build cd ../glibc-build |
Bereiten sie nun Glibc zum kompilieren vor:
../glibc-2.3.2/configure --prefix=/usr \ --disable-profile --enable-add-ons \ --libexecdir=/usr/bin --with-headers=/usr/include |
Die Bedeutung der neuen configure Optionen:
--libexecdir=/usr/bin: Das wird das pt_chown Programm in /usr/bin installieren.
--with-headers=/usr/include: Das stellt sicher, das die Kernel Header in /usr/include zum kompilieren benutzt werden. Wenn sie diese Option nicht angeben, werden die Header aus /tools/include benutzt, was nicht ideal wäre (auch wenn sie identisch sein sollten). Diese Option hat auch den Vorteil das sie sofort merken, wenn sie vergessen haben sollten, die Kernel Header in /usr/include zu installieren.
Kompilieren sie das Paket:
make |
Testen sie das Ergebnis:
make check |
Die Anmerkungen zur Test-suite aus dem Abschnitt namens Installieren von Glibc-2.3.2 in Kapitel 5 gelten natürlich auch hier. Schlagen sie dort nach falls sie irgendwelche Zweifel haben.
Und installieren sie das Paket:
make install |
Die locales wurden durch das obige Kommando nicht installiert. Holen sie das nach:
make localedata/install-locales |
Eine alternative zum obigen Kommando wäre, nur die benötigten oder gewollten locales zu installieren. Das erreichen sie mit dem localedef Befehl. Informationen dazu finden sie in der INSTALL Datei im glibc-2.3.2 Verzeichnisbaum. Einige locales sind allerdings essentiell für die Tests einiger nachfolgender Pakete. Die nachfolgenden Kommandos anstelle des obigen installieren nur ein Minimum an locales so das die Tests sauber durchlaufen:
mkdir -p /usr/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 |
Schlussendlich erzeugen wir die linxthreads Manpages:
make -C ../glibc-2.3.2/linuxthreads/man |
Und installieren die Pakete:
make -C ../glibc-2.3.2/linuxthreads/man install |
Wir müssen die Datei /etc/nsswitch.conf erstellen, denn obwohl Glibc Standardwerte vorgibt falls die Datei fehlt oder kaputt ist, funktionieren diese nicht gut mit Netzwerken. Und wir müssen die Zeitzone korrekt einrichten.
Erstellen sie die neue Datei /etc/nsswitch.conf indem sie das folgende ausführen:
cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files publickey: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: db files # End /etc/nsswitch.conf EOF |
Um herauszufinden in welcher Zeitzone sie sind, führen sie das folgende Skript aus:
tzselect |
Wenn sie ein paar Fragen zu ihrer Lokation beantwortet haben wird das Skript den Namen ihrer Zeitzone ausgeben, ähnlich wie EST5EDT oder Canada/Eastern. Erstellen sie dann die Datei /etc/localtime indem sie folgendes ausführen:
cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime |
Die Bedeutung der Option:
--remove-destination: Dadurch wird das entfernen des bereits existierenden symbolischen Links erzwungen. Der Grund warum wir kopieren anstatt einen symbolischen Link zu benutzen ist, falls /usr auf einer separaten Partition liegt. Das könnte z. B. wichtig werden, wenn in den Single User Modus gebootet wird.
Anstelle von Canada/Eastern müssen sie natürlich den Namen der Zeitzone einsetzen den ihnen tzselect ausgeben hat.
Standardmässig such der dynamisch Lader (/lib/ld-linux.so.2) in /lib und /usr/lib nach dynamischen Bibliotheken die von ausführbaren Programmen zur Laufzeit benötigt werden. Wenn allerdings Bibliotheken ausserhalb von /lib und /usr/lib liegen, müssen sie diese Verzeichnisse in /etc/ld.so.conf einfügen damit der dynamische Lader diese finden kann. Zwei Verzeichnisse die dafür bekannt sind, weitere Bibliotheken zu enthalten, sind /usr/local/lib und /opt/lib, also fügen wir diese Verzeichnisse in den Suchpfad ein.
Erstellen sie die neue Datei /etc/ld.so.conf mit dem folgenden Kommando:
cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib # End /etc/ld.so.conf EOF |
Zurück | Zum Anfang | Weiter |
Installieren der Man-pages-1.60 | Nach oben | Erneutes anpassen der toolchain |