Xcode cross-compiling: Mac - Win - Linux

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

  • Xcode cross-compiling: Mac - Win - Linux

    hallo liebe Entwickler,

    ich bin gerade dabei mit glut und c++ einen kleien spiel prototypen zu programmieren. Das ganze ist sehr low level, es geht nur darum ein paar game-logics auszuprobieren. Also quick and dirty.
    Nun möchte ich das ganze aber auch unter Win und Linux laufen lassen. Wie kann ich Xcode dazu bewegen Windows und Linux Binarys zu schreiben? glut müsste diese Plattformen ja ansich unterstützen.

    Ich habe jetzt schon länger nichts gemacht, und habe mich davor auch nicht so gut asgekannt, weshalb ich eine "einfache" Lösung bevorzugen würde.

    besten Dank im vorraus,
    regards, joedelord
  • Du wirst dir eine Windows- bzw. Linux-Toolchain installieren müssen. Am besten, du schaust nach, was auf dem Fremdrechner gemacht wird und stellst das in Xcode ein.

    Ein Versioning-System wäre mutmaßlich enfacher …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Was meinst du mit Windows- oder Linux-Toolchain. (Dank wikipedia weis ich wenigstens schon ungefährt was eine Toolchain ist). Ist es überhaupt möglich (nachdem ich Tools installierts, etc habe) win und linux Binarys aus Xcode zu erstellen.

    regards, joedelord
  • Du mußt Dir alle Entwicklerwerkzeuge im Sourcecode besorgen: binutils, gcc, ... und diese so compilieren, daß sie Code für Linux-x86 erzeugen. Wenn das getan ist, mußt Du die notwendigen Libraries compilieren und installieren (glibc, ...) Dann kannst Du unter MacOS X crosscompilieren für Linux. Für Windows mußt Du dann dasselbe Procedere durchspielen.

    In der offiziellen GCC Doku findet sich meines Wissens eine Anleitung wie man es machen muß.
  • so, die ersten Probleme treten auf.

    Ich habe mir die gcc source vom svn Server gezogen. soweit hat alles funktioniert. Die Files sind auf meiner Platte und ich weiß sogar wo.

    Laut Installationsanleitung geht es mit configure weiter. also

    Quellcode

    1. $ mkdir gccX
    2. $ cd gccX
    3. $ ../gcc/configure --prefix=./ target=windows


    danach passiert dass:

    Quellcode

    1. [...]//er erkennt das target nicht
    2. checking for a BSD compatible install... /usr/bin/install -c
    3. checking whether ln works... yes
    4. checking whether ln -s works... yes
    5. checking for gcc... gcc
    6. checking whether the C compiler (gcc ) works... yes
    7. checking whether the C compiler (gcc ) is a cross-compiler... no
    8. checking whether we are using GNU C... yes
    9. checking whether gcc accepts -g... yes
    10. checking for Windows-gnatbind... no
    11. checking for gnatbind... no
    12. checking whether compiler driver understands Ada... no
    13. checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
    14. checking for correct version of gmp.h... no
    15. configure: error: Building GCC requires GMP 4.1+ and MPFR 2.2.1+.
    16. Try the --with-gmp and/or --with-mpfr options to specify their locations.
    17. Copies of these libraries' source code can be found at their respective
    18. hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/.
    19. See also http://gcc.gnu.org/install/prerequisites.html for additional info.
    20. If you obtained GMP and/or MPFR from a vendor distribution package, make
    21. sure that you have installed both the libraries and the header files.
    22. They may be located in separate packages.
    23. pnsgw3-client032:~/gccX Simon$
    Alles anzeigen


    Nun habe ich via fink glaube ich alles fehlende installiert, doch er schafft es noch immer nicht und ich weiß auch nicht wo sich die zwei fehlenden Sachen befinden. (sonst hätte ich sie ja angegeben)

    Mein Problem ist nun, dass ich bis jetzt noch nicht wirklich viel mit der Konsole gemacht habe. Vielleicht habt ihr ein paar Tips für mich.

    Ein weiteres Problem ist, dass ich nirgeds eine Liste mit gültigen Targets finde. Nur ein paar Hinweise gcc.gnu.org/install/specific.html

    regards, joedelord
  • Original von joedelord
    Nun habe ich via fink glaube ich alles fehlende installiert...
    Mein Problem ist nun, dass ich bis jetzt noch nicht wirklich viel mit der Konsole gemacht habe.

    Vielleicht habt ihr ein paar Tips für mich.


    Ja.

    1) Ich traue fink nicht so weit ich es werfen kann. Und das ist bei virtuellen Dingen nicht sehr weit.
    2) Was Du da machst darf man mit bestem Gewissen als "exotisch" bezeichnen. Das wird noch ein hartes Stück Arbeit, wenn Du Dich in der Konsole nicht so gut auskennst.

    Alex
    The only thing that really worried me was the ether.
  • Original von below
    Original von joedelord
    Vielen Dank, dann weiß ich wenigstens wass ich morgen zu tun hab.

    Wenn Du es geschafft hast melde Dich mal. Das interessiert sicherlich einige.
    Am besten scheint es mit crosstools zu gehen einen Crosscompiler zu erzeugen. Auch dann gibt es Fallstricke wenn man das auf dem Mac macht. Es braucht ein paar Wrapper-scripts damit sich der Apple gcc korrekt als GNU gcc tarnt (Versionsnummernabfrage). Das steht auf der crosstools-Doku irgendwo.

    Und wenn man sich nicht auskennt, dann dauert es lange. Das kann Wochen dauern bis die toolchain endlich fehlerfrei geht...

    -- hns
  • Nur zur Orientierung: Das ist ja kein Problem von Xcode. Xcode nimmt sich Sourcen und übergibt sie an die Tools der Chain. Letztlich mekrt Xcode nichts davon, ob der Compiler Code für GEM erzeugt oder für AmigaOS.

    Aber du bist ja schon auf dem richtigen (und steinigen) Weg.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Wenn Du keine Fortran brauchst, dann kannst Du auf die GMP Library verzichten. Konfiguriere den Compiler so, daß er nur für die wichtigen Sprachen Code erzeugen soll. Meiner Meinung nach reicht C, C++ aus. Ada, Objective-C Fortran und Java würde es sonst auch noch bauen.
  • RE: Xcode cross-compiling: Mac - Win - Linux

    Eine halbwegs allgemeine Cross-Compiler-Toolchain zu basteln ist kein Spaß, insbesondere für die verschiedenen *NIX-Derivate und ihre Eigenheiten - da kommt nicht ein Binary raus, sondern bestimmt ein gutes Dutzend. Es ist kein Zufall, dass viele Programme dort als Sources mit configure / autoconf ausgeliefert werden. Eine andere Baustelle ist, den Quellcode so zu basteln, dass er auf allen Plattformen sauber kompiliert - meistens kommt man da um einige konditionale Header nicht herum. Wenn's nur glut und quick'n'dirty ist, könnte Java mit JOGL einfacher sein. Ich benutze das seit einigen Wochen - zunächst gezwungenermaßen, muss aber zugeben, dass mich JOGL ziemlich überrascht hat. Und das läuft mit wenig Aufwand auf vielen Systemen.
    Multigrad - 360°-Produktfotografie für den Mac