Source unter 64Bit-System compilen [Cross-Compilen]

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Source unter 64Bit-System compilen [Cross-Compilen]

      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 registrieren Sie sich um Links sehen zu können >> Registrieren << genannt. Hier zu nutze ich im folgendem HowTo einen 32Bit Jail / Bitte registrieren Sie sich um Links sehen zu können >> Registrieren << .

      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 registrieren Sie sich um Links sehen zu können >> Registrieren <<

      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.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Samagon ()

    • Nach "1.4 FreeBSD Source compilen" genauer "make TARGET_ARCH=i386 buildworld" steht da das

      Quellcode

      1. ===> lib/libcom_err/doc (all)
      2. makeinfo --no-split -I /usr/src/lib/libcom_err/doc -I /usr/src/lib/libcom_err/doc /usr/src/lib/libcom_err/doc/com_err.texinfo -o com_err.info
      3. makeinfo: No such file or directory
      4. *** [com_err.info] Error code 1
      5. Stop in /usr/src/lib/libcom_err/doc.
      6. *** [all] Error code 1
      7. Stop in /usr/src/lib/libcom_err.
      8. *** [all_subdir_libcom_err] Error code 1
      9. Stop in /usr/src/lib.
      10. *** [lib.all__D] Error code 1
      11. Stop in /usr/src.
      12. *** [everything] Error code 1
      13. Stop in /usr/src.
      14. *** Error code 1
      15. Stop.
      16. make: stopped in /usr/src
      Alles anzeigen
      ist das normal oder hab ich es komplett verkackt...?
      Um aus Shakespeares Hamlet Akt 4, Szene 5, Fers 28 zu zetieren: NEIN!

      Bitte registrieren Sie sich um Links sehen zu können >> Registrieren <<

      Mein Server: Name steht noch nicht Fest.: 1%
    • Habe das Tutorial nun auch mal befolgt, da ichs grad gebrauchen konnte. Danke dir vielmals dafür.

      Samagon schrieb:

      2.4 Da ich teils das Problem hatte dass man mit pkg keine Packages gefunden hat:
      setenv PACKAGESITE Bitte registrieren Sie sich um Links sehen zu können >> Registrieren <<
      Allerdings habe ich es mit FreeBSD 11 gemacht und musste diesen Step nicht machen.

      Dafür aber:

      mount -t nullfs /etc /usr/x86/etc

      Andernfalls hatte meine Jail keine User und konnte weder über Ports installieren noch pkg konnte etwas machen.

      Aber nun läufts. Danke Danke.
    • Sanii schrieb:

      Habe das Tutorial nun auch mal befolgt, da ichs grad gebrauchen konnte. Danke dir vielmals dafür.

      Samagon schrieb:

      2.4 Da ich teils das Problem hatte dass man mit pkg keine Packages gefunden hat:
      setenv PACKAGESITE Bitte registrieren Sie sich um Links sehen zu können >> Registrieren <<
      Allerdings habe ich es mit FreeBSD 11 gemacht und musste diesen Step nicht machen.
      Dafür aber:

      mount -t nullfs /etc /usr/x86/etc

      Andernfalls hatte meine Jail keine User und konnte weder über Ports installieren noch pkg konnte etwas machen.

      Aber nun läufts. Danke Danke.
      Hab's mal Editiert. Danke dir für die Info :)
    • Langeweile™ schrieb:

      Nach "1.4 FreeBSD Source compilen" genauer "make TARGET_ARCH=i386 buildworld" steht da das

      Quellcode

      1. ===> lib/libcom_err/doc (all)
      2. makeinfo --no-split -I /usr/src/lib/libcom_err/doc -I /usr/src/lib/libcom_err/doc /usr/src/lib/libcom_err/doc/com_err.texinfo -o com_err.info
      3. makeinfo: No such file or directory
      4. *** [com_err.info] Error code 1
      5. Stop in /usr/src/lib/libcom_err/doc.
      6. *** [all] Error code 1
      7. Stop in /usr/src/lib/libcom_err.
      8. *** [all_subdir_libcom_err] Error code 1
      9. Stop in /usr/src/lib.
      10. *** [lib.all__D] Error code 1
      11. Stop in /usr/src.
      12. *** [everything] Error code 1
      13. Stop in /usr/src.
      14. *** Error code 1
      15. Stop.
      16. make: stopped in /usr/src
      Alles anzeigen
      ist das normal oder hab ich es komplett verkackt...?
      Same.
    • Sanii schrieb:

      Cyber schrieb:

      Was hat es für Vorteile z.B: nicht auf FreeBSD 11 32 Bit sondern 64 Bit zu compilen?

      King Regards
      Cyber
      Gar keine, da du ja in ner 32Bit Umgebung damit compilest. Ersparst du dir nur zusätzlich ne VM oder nen 2. Compileserver zu haben.
      Ne lokale VDI läuft meist schneller und ich habe dazu eine bessere Anbindung als zu einem Server im Internet.
      Aber gut, Danke aufjedenfall.

      King Regards
      Cyber
    • ich bekomme den fehler hab das howto befolgt aber im jail kommt das

      C-Quellcode

      1. # pkg_add -r gcc48
      2. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/Latest/gcc48.tbz... Done.
      3. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gmp-5.1.2.tbz... Done.
      4. mtree: line 6: unknown user root
      5. pkg_add: mtree returned a non-zero status - continuing
      6. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/mpfr-3.1.2.tbz... Done.
      7. mtree: line 6: unknown user root
      8. pkg_add: mtree returned a non-zero status - continuing
      9. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/mpc-0.9.tbz... Done.
      10. mtree: line 6: unknown user root
      11. pkg_add: mtree returned a non-zero status - continuing
      12. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gcc-ecj-4.5.tbz... Done.
      13. mtree: line 6: unknown user root
      14. pkg_add: mtree returned a non-zero status - continuing
      15. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/libiconv-1.14_1.tbz... Done.
      16. mtree: line 6: unknown user root
      17. pkg_add: mtree returned a non-zero status - continuing
      18. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gettext-0.18.3.tbz... Done.
      19. mtree: line 6: unknown user root
      20. pkg_add: mtree returned a non-zero status - continuing
      21. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/binutils-2.23.2.tbz... Done.
      22. mtree: line 6: unknown user root
      23. pkg_add: mtree returned a non-zero status - continuing
      24. mtree: line 6: unknown user root
      25. pkg_add: mtree returned a non-zero status - continuing
      26. # pkg_add -r gmake
      27. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/Latest/gmake.tbz... Done.
      28. mtree: line 6: unknown user root
      29. pkg_add: mtree returned a non-zero status - continuing
      Alles anzeigen
    • GermanDreams 1992 schrieb:

      ich bekomme den fehler hab das howto befolgt aber im jail kommt das

      C-Quellcode

      1. # pkg_add -r gcc48
      2. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/Latest/gcc48.tbz... Done.
      3. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gmp-5.1.2.tbz... Done.
      4. mtree: line 6: unknown user root
      5. pkg_add: mtree returned a non-zero status - continuing
      6. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/mpfr-3.1.2.tbz... Done.
      7. mtree: line 6: unknown user root
      8. pkg_add: mtree returned a non-zero status - continuing
      9. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/mpc-0.9.tbz... Done.
      10. mtree: line 6: unknown user root
      11. pkg_add: mtree returned a non-zero status - continuing
      12. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gcc-ecj-4.5.tbz... Done.
      13. mtree: line 6: unknown user root
      14. pkg_add: mtree returned a non-zero status - continuing
      15. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/libiconv-1.14_1.tbz... Done.
      16. mtree: line 6: unknown user root
      17. pkg_add: mtree returned a non-zero status - continuing
      18. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/gettext-0.18.3.tbz... Done.
      19. mtree: line 6: unknown user root
      20. pkg_add: mtree returned a non-zero status - continuing
      21. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/All/binutils-2.23.2.tbz... Done.
      22. mtree: line 6: unknown user root
      23. pkg_add: mtree returned a non-zero status - continuing
      24. mtree: line 6: unknown user root
      25. pkg_add: mtree returned a non-zero status - continuing
      26. # pkg_add -r gmake
      27. Fetching http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.2-release/Latest/gmake.tbz... Done.
      28. mtree: line 6: unknown user root
      29. pkg_add: mtree returned a non-zero status - continuing
      Alles anzeigen

      Hatte den selben Fehler. Einfach den "etc" mitmounten.

      Sanii schrieb:

      Habe das Tutorial nun auch mal befolgt, da ichs grad gebrauchen konnte. Danke dir vielmals dafür.

      Samagon schrieb:

      2.4 Da ich teils das Problem hatte dass man mit pkg keine Packages gefunden hat:
      setenv PACKAGESITE Bitte registrieren Sie sich um Links sehen zu können >> Registrieren <<
      Allerdings habe ich es mit FreeBSD 11 gemacht und musste diesen Step nicht machen.
      Dafür aber:

      mount -t nullfs /etc /usr/x86/etc

      Andernfalls hatte meine Jail keine User und konnte weder über Ports installieren noch pkg konnte etwas machen.

      Aber nun läufts. Danke Danke.
    • Neu

      Samagon schrieb:

      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
      make: "/usr/src/share/mk/local.sys.mk" line 3: Malformed conditional (${MK_DIRDEPS_BUILD} == "yes" || ${MK_META_MODE} == "yes")
      make: "/usr/src/share/mk/local.sys.mk" line 51: Malformed conditional (${.MAKE.MODE:Mmeta*} != "")
      make: Fatal errors encountered -- cannot continue