Software > Coding
Cross-compile GCC für ARM64?
goetz @ 3rz:
--- Zitat von: Thorsten Otto am Sa 04.02.2023, 17:55:01 ---Hab jetzt tatsächlich mal versucht macOS Monterey unter VirtualBox zum laufen zu bekommen. Hat auch weitgehend funktioniert. Allerdings ist alles extrem zäh. Dann wollte ich die commandline-tools installieren. Resultat siehe Bild. Da habe ich es drann dran gegeben ;)
--- Ende Zitat ---
Ich hab die passende Hardware, aber mangelnde Kenntnisse. Ich habe dein binutils-Zweig mit git clone --recursive in ein Verzeichnis kopiert, das binutils-2.39-20220911-build.sh Script in ein Verzeichnis darüber, dann das durch git neu entstandene Verzeichnis binutils mit einem Synlink binutils-2.39 ergänzt, da das Script wohl danach sucht:
--- Code: ---% bash binutils-2.39-20220911-build.sh
binutils-2.39: no such directory
--- Ende Code ---
Mit dem Symlink war der Fehler weg, nun fehlen noch die Patches. Also die gezogen und …
--- Code: ---% patch patches/binutils/*
patching file 'patches/binutils/binutils-2.39-mint-20220911.patch'
1 out of 1 hunks failed--saving rejects to 'patches/binutils/binutils-2.39-mint-20220911.patch.rej'
--- Ende Code ---
… mit …
--- Code: ---@@ -30,7 +30,7 @@
const bfd_arch_info_type *b);
#define N(name, print,d,next) \
-{ 32, 32, 8, bfd_arch_m68k, name, "m68k",print,2,d,bfd_m68k_compatible, \
+{ 32, 32, 8, bfd_arch_m68k, name, "m68k",print,1,d,bfd_m68k_compatible, \
bfd_default_scan, bfd_arch_default_fill, next, 0 }
static const bfd_arch_info_type arch_info_struct[] =
--- Ende Code ---
Was mache ich falsch?
Meine Umgebung:
--- Code: ---% clang -v
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
--- Ende Code ---
--- Code: ---% sw_vers
ProductName: macOS
ProductVersion: 13.2
BuildVersion: 22D49
--- Ende Code ---
Thorsten Otto:
--- Zitat von: gh-baden am Sa 04.02.2023, 20:07:31 ---Was mache ich falsch?
--- Ende Zitat ---
Wie Du an der Meldung
--- Zitat ---patching file 'patches/binutils/binutils-2.39-mint-20220911.patch'
--- Ende Zitat ---
siehst, versuchst du gerade den patch zu patchen ;)
Allerdings: wenn du das Directory mit git gecloned hast, brauchst du den patch nicht. Du musst dann allerdings auch den richtigen branch auschecken:
--- Code: ---$ cd <pfad-zu>/binutils
$ git checkout binutils-2_39-mint
--- Ende Code ---
Dann wieder in das Verzeichnis wo das script ist, und du die Sachen bauen willst (kann auch ganz woanders sein), und dort ein
--- Code: ---$ touch .patched-binutils-2.39
--- Ende Code ---
damit er weiss daß er nicht mehr patchen muss.
Dann sollte es hoffentlich gehen.
Entsprechendes gilt auch später für gcc:
--- Code: ---$ cd <pfad-wo-gcc-gecloned ist>
$ git checkout mint/gcc-4.6
$ cd <pfad-zu-build-directory>
$ touch .patched-gcc-4.6.4
$ ./gcc-4.6.4-20200502-build.sh
--- Ende Code ---
PS: ja, ich weiss, da sollten im script ein paar mehr Kommentare stehen ;)
Thorsten Otto:
Wenn mans nicht selber bauen kann, lässt man halt bauen ;) (in dem Fall von github)
Kannst du mal http://tho-otto.de/snapshots/crossmint/macos/binutils/binutils-2.39-mint-20220911-bin-macos.tar.xz testen?
Hatte erst ein paar Probleme. Obwohl da monterey läuft behauptet er steif und fest, das wäre ein x64-64 System. Was liefert bei dir
--- Code: ---$ uname -m
$ clang --print-target-triple
--- Ende Code ---
gcc muss ich noch schauen. Könnte etwas schwieriger werden, vor allem bei den zusätzlichen libraries (gmp, mpfr, und mpc). Sind die bei dir schon universal? (bzw überhaupt vorhanden als *.dylib)? Ansonsten muss ich schauen daß die statisch gebaut werden, allerdings sind die eigentlich per target angepasst.
czietz:
--- Zitat von: Thorsten Otto am So 05.02.2023, 12:56:58 ---Hatte erst ein paar Probleme. Obwohl da monterey läuft behauptet er steif und fest, das wäre ein x64-64 System.
--- Ende Zitat ---
Das dürfte daran liegen, dass es eben ein x86-64-System ist! MacOS-Runner auf ARM64 hat GitHub für das dritten Quartal 2023 auf der Roadmap: https://github.com/orgs/github/projects/4247/views/1?filterQuery=status%3A%22Q3+2023+%E2%80%93+Jul-Sep%22.
goetz @ 3rz:
--- Zitat von: Thorsten Otto am So 05.02.2023, 12:56:58 ---Wenn mans nicht selber bauen kann, lässt man halt bauen ;) (in dem Fall von github)
--- Ende Zitat ---
Bist schneller als ich :o
Sieht gut aus:
--- Code: ---% file […]cross-mint/bin/m68k-atari-mint-as
cross-mint/bin/m68k-atari-mint-as: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
cross-mint/bin/m68k-atari-mint-as (for architecture x86_64): Mach-O 64-bit executable x86_64
cross-mint/bin/m68k-atari-mint-as (for architecture arm64): Mach-O 64-bit executable arm64
--- Ende Code ---
d.h. das ist ein modernes Universal2-Binary mit x86_64 und arm64 Code-Zweigen.
--- Zitat von: Thorsten Otto am So 05.02.2023, 12:56:58 ---Hatte erst ein paar Probleme. Obwohl da monterey läuft behauptet er steif und fest, das wäre ein x64-64 System. Was liefert bei dir
--- Code: ---$ uname -m
$ clang --print-target-triple
--- Ende Code ---
--- Ende Zitat ---
--- Code: ---% uname -m
arm64
goetz@Wintermute2 ~ % clang --print-target-triple
arm64-apple-darwin22.3.0
--- Ende Code ---
--- Zitat von: Thorsten Otto am So 05.02.2023, 12:56:58 ---gcc muss ich noch schauen. Könnte etwas schwieriger werden, vor allem bei den zusätzlichen libraries (gmp, mpfr, und mpc). Sind die bei dir schon universal?
--- Ende Zitat ---
Die gibt’s alle drei (nativ für arm64) bei Homebrew, daher: ja.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln