wake-up-neo.com

Wie kompiliere ich für OS X unter Linux oder Windows?

Ich möchte meine C/C++ - Apps auf OS X portieren.

Ich habe keinen Mac, aber Linux und Windows. Gibt es ein Werkzeug dafür?

69
Unknown

Es scheint einige Skripte zu geben, die geschrieben wurden, um Sie beim Einrichten der Cross-Kompilierung für den Mac zu unterstützen. Ich kann nicht sagen, wie gut sie sind oder wie gut sie für Ihr Projekt geeignet sind. In der Dokumentation beziehen sie sich auf diese Anweisungen für das Cross-Compilieren für 10.4 und diese Anweisungen für das Cross-Compilieren für 10.5; Diese Anweisungen sind möglicherweise hilfreicher als das Skript, je nachdem, wie gut das Skript Ihren Anforderungen entspricht.

Wenn es sich bei Ihrem Programm um freie oder Open-Source-Software handelt, möchten Sie möglicherweise stattdessen ein MacPorts -Portfile erstellen (Dokumentation hier ) und Ihren Benutzern erlauben, Ihr Programm mit MacPorts zu erstellen. Dies ist im Allgemeinen die bevorzugte Methode zur Installation von portabler freier Software oder Open Source-Software unter Mac OS X. MacPorts lief bekanntermaßen in der Vergangenheit unter Linux. Daher ist es möglicherweise möglich, Ihr Portfile unter Linux zu entwickeln und zu testen (obwohl dies offensichtlich erforderlich sein wird) auf einem Mac getestet werden).

22
Brian Campbell

Für Linux gibt es einen vorgefertigten GCC-Cross-Compiler (aus öffentlich verfügbaren, von Apple modifizierten GCC-Quellen).

https://launchpad.net/~flosoft/+archive/cross-Apple

Update für 2015

  1. Nach so vielen Jahren unterstützt der Industriestandard IDE jetzt OSX/iOS/Android.

http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311

  1. RadStudio von Embarcadero unterstützt auch das Erstellen von OSX/iOS/Android-Apps unter Windows.

  2. Diese Antwort von Thomas bietet auch ein Cross-Compilation-Tool.

Für all diese Optionen benötigen Sie noch ein echtes Mac/i-Gerät, um die Anwendung zu testen.

49
Viktor Latypov

Ich habe ein Projekt namens OSXCross erstellt, das auf OS X (10.4-10.9) unter Linux abzielt.

Derzeit werden clang 3.2 bis 3.8 (Trunk) unterstützt (Sie können das clang Ihrer Dist verwenden).
Darüber hinaus können Sie auch ein aktuelles Vanilla GCC (4.6+) erstellen.

LTO funktioniert auch für clang und GCC.

Derzeit wird cctools-870 mit ld64-242 verwendet.

https://github.com/tpoechtrager/osxcross

29
Thomas
  1. Holen Sie sich " VMware Player "
  2. Holen Sie sich " Mac OS X VM-Image "
  3. Kompilieren/Debuggen/Integrieren und Testen Sie Ihren Code auf dem neuen Betriebssystem, um sicherzustellen, dass alles funktioniert

Wenn Sie versuchen, auf mehreren Plattformen etwas zum Laufen zu bringen, müssen Sie unbedingt auf der vorgesehenen Plattform kompilieren/ausführen/integrieren/testen . Sie können nicht einfach auf einer Plattform kompilieren/ausführen und dann sagen "oh, es sollte auf der anderen Plattform genauso funktionieren".

Selbst mit einer wirklich guten plattformübergreifenden Sprache wie Java) werden Sie auf Probleme stoßen, bei denen es auf der anderen Plattform nicht genauso funktioniert.

Die einzige Möglichkeit, die meine Zeit/Produktivität/Fähigkeit, auf mehreren Plattformen schnell zu iterieren, berücksichtigt, ist die Verwendung eines VM der anderen Plattformen.

Es gibt andere Lösungen wie Dual-Boot und solche, die ich nicht erwähnt habe, aber ich stelle fest, dass sie meine Produktivität/Zeit nicht respektieren.

Nehmen Sie als Beispiel Dual-Boot:

  1. Ich ändere OS 1
  2. starten Sie OS 2 neu
  3. vergiss etwas auf OS 1
  4. starten Sie OS 1 neu
  5. nehmen Sie unter OS 1 eine Änderung vor
  6. starten Sie OS 2 neu ... [~ # ~] erneut [~ # ~] ...

[~ # ~] bam [~ # ~] es vergeht 30 Minuten meiner Zeit und ich habe nichts getan produktiv.

6

Sie werden auf jeden Fall OS X irgendwie brauchen. Auch wenn Sie keinen Mac besitzen, können Sie einige Alternativen ausprobieren.

4

Sie würden eine Toolchain benötigen, um das Kompilieren für mach-o zu überbrücken, aber selbst wenn Sie das hätten, werden Sie nicht die Bibliotheken haben, mit denen Sie Apple) entwickeln können. Ich bin nicht sicher, wie Sie das tun würden leider ohne portieren können.

4
Joel Levin

Apple-Entwicklung ist ein seltsames Tier für sich. OS X verwendet einen Port von GCC mit einigen Modifikationen, um es "appley" zu machen. Theoretisch ist es möglich, den Quellcode auf die Apple GCC und Toolchain sowie die Apple Kernel- und Library-Header zu legen und einen Cross-Compiler auf Ihrem Windows zu erstellen Maschine.

Warum du diesen Weg gehen willst, ist mir ein Rätsel. Sie können einen billigen Mac mini ab 600 US-Dollar kaufen. Die Zeit, die Sie investieren, um einen Cross-Compiler zum Laufen zu bringen (insbesondere mit einem Windows Host für Unix-Tool), wird wahrscheinlich sowieso mehr als 600 US-Dollar kosten.

Wenn Sie Ihre App wirklich plattformübergreifend gestalten möchten, schauen Sie sich Qt, wxWidgets oder FLTK an. Alle bieten plattformübergreifende Unterstützung mit minimalen Änderungen am Basiscode. Zumindest müssen Sie auf diese Weise nur einen Mac finden, auf dem Sie Ihre App kompilieren können, und das ist nicht allzu schwierig, wenn Sie einige technisch versierte Freunde haben, denen es nichts ausmacht, Ihnen SSH-Zugriff auf ihren Mac zu gewähren.

4
Adam Hawes

Ich fand diese kleine Dokumentation im Internet: http://devs.openttd.org/~truebrain/compile-farm/Apple-darwin9.txt

Dies beschreibt genau, was Sie wollen. Ich bin selbst daran interessiert, habe es aber noch nicht getestet (habe es vor 10 Minuten gefunden). Die Dokumentation scheint jedoch gut zu sein.

3
Albert Zeyer

Sie können einen Mac in der Cloud von der this Website mieten. Sie können sie ab 1 US-Dollar mieten, was ausreichen sollte (es sei denn, Sie brauchen Root-Zugriff, dann sehen Sie sich 49 US-Dollar + an).

2
HexCoder