Wie der Mittelteil vermuten lässt, sind hier drin Bibliotheken für den C-Compiler. Die werden für recht grundlegende Dinge verwendet wie Speicher zuweisen, Verzeichnisse durchstöbern, Dateien öffnen, hineinschreiben und schließen, nach Vorlagen durchsuchen, etwas Arithmetik und so weiter.
Warnung! Beachten von --enable-kernel=2.6.25 ist wichtig! Ältere Kernel sind einfach zu alt, da hilft nur mehr die Live-CD!
Jetzt erst einmal auspacken:
tar -xJf pakete/glibc-2.14.1.tar.xz && cd glibc-2.14.1/
Wegen Änderungen in GCC-4.6.1 muss Glibc gepatcht werden:
patch -Np1 -i ../patches/glibc-2.14.1-gcc_fix-1.patch
Noch ein Patch ohne den das weitere Bauen des Molli fehlschlagen könnte:
patch -Np1 -i ../patches/glibc-2.14.1-cpuid-1.patch
Und wieder erzeugen wir auf Empfehlung der Glibc-Entwickler ein Extraverzeichnis in dem die Glibc dann kompiliert wird:
mkdir -v ../glibc-build && cd ../glibc-build
Und jetzt kommt es auf die Rechnerarchitektur an, aber die zu
erfahren ist nicht schwer, das macht im folgenden Kommando der
Befehl uname -m. Das
$ und die Klammern um den Befehl bewirken das dieser zuerst
ausgeführt wird, so das an Stelle von $(uname -m) dort dann z.B.
i686
steht:
case $(uname -m) in i686) echo "CFLAGS += -march=i686 -mtune=native" > configparms ;; esac
Dadurch das wir für march i686 verwenden kann der erzeugte Code auch auf anderen Maschinen die einen Prozessor der i686 Familie haben ausgeführt werden. Würden wir hier native eintragen, kann der Code nur noch auf CPUs des gleichen Typs ausgeführt werden. Wer das möchte kann hier also -march=native verwenden. Dadurch wird der Code noch besser und weitreichender an die Möglichkeiten der CPU angepasst.
Falls Dein Prozessor schon älter ist, i486 oder i586 solltest Du folgenden Befehl alternativ zum vorhergehenden verwenden:
case $(uname -m) in i[4,5]86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;; esac
i386 wird seit Glibc Version 2.8 nicht mehr unterstützt.
Jetzt konfigurieren:
../glibc-2.14.1/configure --prefix=/tools \ --host=$MOLLI_TGT --build=$(../glibc-2.14.1/scripts/config.guess) \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.25 --with-headers=/tools/include \ libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
Die Bedeutung der Parameter für configure:
--host=$MOLLI_TGT,
--build=$(../glibc-2.14.1/scripts/config.guess)
Wieder wird hier Glibc zum Crosskompilieren geeignet gemacht
mit dem Cross-Compiler und Cross-linker in /tools
.
--disable-profile
die Bibliotheken werden ohne Profilinformationen geschaffen. Dass das gewünscht ist, kann aber vorkommen.
--enable-add-ons
Glibc darf die Zusätze für NPTL samt Bibliotheken nutzen.
--enable-kernel=2.6.25
Dadurch werden nur Kernel >= 2.6.25 unterstützt.
--with-headers=/tools/include
Glibc soll auch die vorher nach /tools
kopierten Header verwenden.
libc_cv_forced_unwind=yes
Beim Crosskompilieren wird forced unwind sonst nicht entdeckt, aber gebraucht.
libc_cv_c_cleanup=yes
Auch C sauber machen wird beim Crosskompilieren sonst nicht gefunden.
Trotzdem gibt es Fehlermeldungen, wonach msgfmt fehlt oder ungeeignet wäre und daher einige Funktionen fehlten. Das ist weiter ziemlich uninteressant, weil Gettext auch fehlt, das darauf Wert legen würde:
configure: WARNING: *** These auxiliary programs are missing or *** incompatible versions: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.
Also weiter mit:
make
Aber Folgendes: Würde jetzt ein Testlauf versucht, wären lokale Daten wie Zeit, Datum u. ä. nötig. Es wird daher ein Testlauf nicht empfohlen, wobei dann lokale Daten auch überflüssig sind. Aber das Thema wird sicher noch behandelt.
Installiere das Paket:
make install
Zu Ende wie immer raus hier und löschen:
cd .. && rm -rf glibc-*