Heyo,
da ich das folgende HowTo noch in keinem M2Board gefunden habe, hier eine Anleitung wie ihr auf einem 64Bit FreeBSD den Source als 32bit Binary (unter 32bit & 64bit laufbar) compilen könnt, auch Bitte melden Sie sich an, um diesen Link zu sehen. genannt. Hier zu nutze ich im folgendem HowTo einen 32Bit Jail / Bitte melden Sie sich an, um diesen Link zu sehen..
Getestet hab ich das ganze bis jetzt unter FreeBSD 10.3 (hier musste ich den include Ordner vom System in den Jail kopieren, mehr dazu später) und unter 9.3/9.2, selbstverständlich überall 64Bit Version.
0. Wichtiges
0.1 Da ich im folgenden wget nutze müssen wir dieses erst einmal "installieren":
pkg install wget
1. 32Bit Jail / Chroot compilen + erstellen
1.1 FreeBSD Source downloaden
wget ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/9.3-RELEASE/src.txz
1.2 FreeBSD Source entpacken
tar -C / -xvzf src.txz
1.3 Ordner für den Chroot erstellen
mkdir /usr/x86/
1.4 FreeBSD Source compilen [Dies dauert seine Zeit, je nach Root kann dies schon mal einige Stündchen dauern]
cd /usr/src
make TARGET_ARCH=i386 buildworld
1.4 FreeBSD Chroot "erstellen"
make TARGET_ARCH=i386 DESTDIR=/usr/x86 installworld
1.5 Filesystem erstellen. [Der erste Befehl darf fehlschlagen, sollte der Ordner bereits existieren]
mkdir /usr/x86/proc
mount -t procfs proc /usr/x86/proc
1.6 Einige Ordner mit in den Jail mounten
mkdir -p /usr/x86/usr/ports
mkdir -p /usr/x86/usr/local/include
mount -t nullfs /usr/ports /usr/x86/usr/ports
mount -t nullfs /usr/local/include /usr/x86/usr/local/include
Bei FreeBSD 11 (danke an Sanii):
mount -t nullfs /etc /usr/x86/etc
2. Im Jail / Chroot die benötigten Packages installieren
2.1 In den Jail / Chroot gehen:
chroot /usr/x86
2.2 Nameserver eintragen:
ee /etc/resolv.conf
Im Editor folgendes einfügen:
nameserver 8.8.8.8
Speichern: ESC -> Enter -> Enter
2.3 pkg installieren:
pkg
2.4 Da ich teils das Problem hatte dass man mit pkg keine Packages gefunden hat:
setenv PACKAGESITE http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/Latest/
2.5 Packages installieren:
Solltet ihr gcc49 für euren Source benötigen müsst ihr natürlich gcc49 installieren statt gcc48!
pkg_add -r gcc48
pkg_add -r gmake
pkg_add -r makedepend
pkg_add -r devil
optional:
pkg_add -r subversion
pkg_add -r boost-all
2.6 Den Jail verlassen:
exit
2.7 Solltet ihr FreeBSD 10.3 haben war bei mir folgender Befehl notwendig:
cp -r /usr/include/ /usr/x86/usr/include
An für sich war es das auch schon.
Ihr könnt nun euren Source in /usr/x86 hochladen und im Jail compilen.
Wichtig: Der Jail kennt /usr/x86 nicht, da das sein "/" Verzeichnis ist.
Sollte euer Source also in
/usr/x86/workspace
sein, ist das im Jail nur:
/workspace
Zum Compilen einfach in den Jail gehen:
chroot /usr/x86
Und wie immer compilen (beispielsweise):
cd /workspace/game/src
gmake clean
gmake -j4
Danach müsst ihr den Jail natürlich auch wieder verlassen mit:
exit
Zum Schluss möchte ich noch anmerken dass Vieles hiervon natürlich nicht von mir ist. Wie man einen Chroot erstellt wird in Google oft genug erklärt, daher hier auch meine Quelle dazu:
Bitte melden Sie sich an, um diesen Link zu sehen.
Ja mir ist auch bewusst dass ich die FreeBSD 9.2 Packages nutze, dies funktioniert auch problemlos. Ich hatte nur auf die schnelle den 9.3 Link nicht mehr gefunden.
Falls es hier jemand gebrauchen kann: Viel Spaß & Erfolg.
Ich persönlich nutze es nur zu gerne, da ich persönlich finde dass ein extra Root nur zum Compilen Schwachsinn ist und man genauso auf seinem Aufbau-/Testroot compilen kann.