BSD daemon

NetBSD Dokumentation:

Cross-building NetBSD

Frequently Asked Questions

Schritt für Schritt

Häufige Probleme

Weitere Informationen


Frequently Asked Questions


Fachausdrücke in diesem Dokument (zurück)

Zum Beispiel: Wenn Sie unter NetBSD/i386 Binärdateien für NetBSD/sh3 erstellen, ist dies ein Cross Build: NetBSD/i386 ist das "Host System", und NetBSD/sh3 ist das "Target System".

Wann wird ein Cross Build benötigt? (zurück)


Schritt für Schritt


Auswahl des Host Systems (zurück)

Sofern Sie keine besonderen Gründe dagegen haben, so schlagen wir vor, NetBSD (wenn möglich den letzten Release oder NetBSD-current) als Host System zu nutzen. Andere Plattformen sind zwar auch unterstützt, werden jedoch weniger häufig getestet. Einige mehr oder weniger aktuelle Hinweise für andere Plattformen finden Sie in src/tools/compat/README .

Vorbereitung der Build Hierarchie (zurück)

Zuerst benötigen Sie natürlich die NetBSD Quellen. Sehen Sie hierzu: Tracking NetBSD-current (englisch). Im Folgenden nehmen wir an, dass sich die Sources unter $TOP/src befinden.

Erstellung der Cross-Compiler Toolchain (zurück)

Um die notwendigen Tools für ein macppc Target System im Verzeichnis /usr/cross/{bin,include,lib,libexec,...} zu erstellen, führen Sie diesen Befehl aus:
	% cd $TOP/src
	% ./build.sh -m macppc -T /usr/cross tools

Für weitere Optionen und allgemeine Hilfe, sehen Sie

./build.sh -h

Die eigenliche Cross-Kompilation des Kernel (zurück)

Nun nutzen Sie die neu erstellten Tools um den Kernel zu kompilieren. Da NetBSDs config(8) Plattform-unabhängig ist, können Sie dies von dem Host System aus tun. (Beachten Sie jedoch, dass config(8) Versions-abhängig ist; Sie können also mit einem -current config keinen 1.6 Kernel erstellen, weshalb die nbconfig Binärdatei aus dem Cross-Verzeichnis genutzt wird.)
% cd $TOP/src/sys/arch/macppc/conf
% cp GENERIC MYCONF
% vi MYCONF
Um nun den Kernel per Hand zu cross-kompilieren, geben Sie die folgenden Befehle ein:
% /usr/cross/bin/nbconfig MYCONF
% cd ../compile/MYCONF
% /usr/cross/bin/nbmake-macppc depend
% /usr/cross/bin/nbmake-macppc 
Oder Sie lassen ./build.sh Ihnen die Arbeit abnehmen:
% cd $TOP/src
% ./build.sh kernel=MYCONF

Die eigentlich Cross-Kompilation des Userlands (zurück)

Auch hier können Sie das ./build.sh Script nutzen, um das gesamte Userland wie unter Tracking NetBSD-current beschrieben zu erstellen:
# cd $TOP/src
# ./build.sh -D $DESTDIR -d

Häufige Probleme


``Compiler died with internal error'' oder ähnliche Fehlermeldung (zurück)

In einem Cross Build ist es oft schwieriger, den Compiler korrekt zu konfigurieren. Bugs im Compiler tauchen wesentlich häufiger auf. Des Weiteren ist es notwendig, einen anderen Compiler zu benutzen, als unter normalen Umständen; Probleme in der Kompatibilität zwischen verschiedenen Compiler Versionen (z.B. verschiedene Versionen von GCC oder zu einem Compiler eines anderen Anbieters) können uns hier Kopfschmerzen bereiten.

Ohne den richtigen Prä-Prozessor (cpp(1)), geraten Sie leicht in Schwierigkeiten mit vor-definierten Symbolen, wie z.B. __NO_LEADING_UNDERSCORES__ oder __LITTLE_ENDIAN__.

Natürlich müssen wir unsere Cross Builds weiter stabilisieren.

Leider gibt es keine allgemeine Lösung für solche Fehler. Doch die folgenden Hinweise können helfen:


Home page
Zurück zu Dokumentation

(Ihre Meinung) $NetBSD: index.html,v 1.9 2005/09/28 17:24:39 mishka Exp $
Copyright © 1994-2004 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.