it-swarm.com.de

Wie können wir ppc / ppc64 sowie die volle 10.4 / 10.5 SDK-Unterstützung für Xcode 4 wiederherstellen?

Da Apple nur SDK 10.6 mit Xcode4 ausliefert, wurde die Entwicklung von PPC Anwendungen mit Xcode4 unmöglich. Während es möglich ist, Anwendungen mit Xcode4 zu entwickeln, die auch auf 10.5- und möglicherweise sogar auf 10.4-Systemen ausgeführt werden können (durch Auswahl von SDK 10.6, aber Bereitstellungsziel 10.5 oder 10.4), können sie nur auf Intel-Macs ausgeführt werden, da Sie mindestens SDK 10.5 für benötigen Erstellen von PPC Anwendungen.

Außerdem gibt es einige seltene Fälle, in denen Sie wirklich vor 10.6 ein SDK erstellen müssen, um die vollständige Plattformunterstützung zu erhalten, z. Wenn bestimmte veraltete Funktionen aus dem 10.6 SDK vollständig verschwunden sind, müssen Sie sie jedoch verwenden, und in diesen Fällen ist dynamisches Verknüpfen nicht immer die beste Option. Auch das Verknüpfen mit einem früheren SDK erleichtert manchmal die Entwicklung, da Funktionen, die Sie nicht verwenden sollten, zu Inkompatibilität mit früheren Betriebssystemversionen führen, nicht verfügbar sind und jeder Versuch, sie zu verwenden, sofort zu Compiler- oder Linkerfehlern führt.

Last but not least hat Apple auch die GCC 4.0-Unterstützung von Xcode4 entfernt. Dies ist möglicherweise erforderlich, damit bestimmte Software ordnungsgemäß erstellt werden kann, und Apple hat es unter Verwendung von SDK nie zugelassen, Software mit GCC 4.2 zu kompilieren 10.4, obwohl ich kaum glaube, dass dies wirklich Probleme verursachen würde, nachdem alle mit GCC 4.2 und SDK 10.6 erstellte Software auch unter Mac OS 10.4 ohne Probleme ausgeführt werden kann, solange das Bereitstellungsziel korrekt festgelegt wurde und keine Funktionalität vorhanden ist nicht verfügbar unter MacOS 10.4 wurde verwendet.

Natürlich können Sie Xcode3 immer parallel neben Xcode4 installieren, aber das bedeutet, dass Sie auf alle (großartigen?) Neuen Funktionen von Xcode4 verzichten und weiterhin mit der veralteten Xcode3-IDE arbeiten müssen. Es wäre sicherlich viel besser, wenn Sie auch alle Ihre alten Projekte im selben IDE wie Ihre neuen verwalten und von den neuen Funktionen profitieren könnten. Nicht alle Projekte können nur in absehbarer Zeit mit 10.6 oder Intel erstellt werden. Außerdem bin ich strikt dagegen, die Unterstützung für ältere Plattformen früher abzuschaffen, als dies wirklich notwendig wäre.

Können wir diese Funktionalität auf Xcode4 wiederherstellen?

93
Mecki

Die schnelle Antwort lautet: Ja, wir können!

Bevor ich zum Teil " wie es gemacht wird " komme, hier ein paar Hinweise zu meinem Patch/Hack/Fix. Von Anfang an waren die Hauptziele:

  1. Halten Sie alle Änderungen auf ein absolutes Minimum.
    Wir möchten die Xcode-Setups so original wie möglich halten.

  2. Vermeiden Sie auf jeden Fall das Patchen oder Ändern von Dateien.
    Wir möchten, dass alle Dateien unverändert bleiben und ihren ursprünglichen Inhalt behalten.

  3. Vermeiden Sie es, Dateien zu verschieben oder zu kopieren, es sei denn, dies ist unbedingt erforderlich.

Ich konnte all diese Ziele halten. Fast alles wird durch das Erstellen von Symlinks erledigt. Es musste nur ein einziger vorhandener Symlink ersetzt werden, und wir sichern ihn vor dem Ersetzen, nur für den Fall.

Wenn Sie kein Experte für Terminaloperationen sind, empfehle ich Ihnen dringend, alle Terminalbefehle aus meiner Antwort in Ihr Terminal zu kopieren/einzufügen, um Tippfehler zu vermeiden. Denken Sie daran, dass auch Abstände, Zitate und insbesondere Groß- und Kleinschreibung wichtig sein können. Kopieren Sie sie zeilenweise, nie mehr als eine Zeile auf einmal, und drücken Sie nach jeder eingefügten Zeile die Eingabetaste, um den Befehl auszuführen. Sollten Sie bei einem Vorgang zur Eingabe eines Kennworts aufgefordert werden, wird dies das Kennwort des derzeit angemeldeten Administratorbenutzers sein (Ihre Tastatureingaben werden während der Eingabe nicht angezeigt, dies ist normal, keine Sorge, geben Sie einfach das Kennwort weiter ein und drücken Sie die Eingabetaste.) -versuche, ob du einen Tippfehler hattest und werde erneut gefragt).

Voraussetzung

Bevor wir beginnen können, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:

Schritt 1: Installieren von Xcode3

Wichtig : Installieren Sie nicht " System Tools " oder " Unix Development "Paket von Xcode3.
Ob Sie " Mac OS X 10.4 SDK " und/oder " Documentation " installieren möchten, hängt von ab Sie. Wenn das ein Xcode3 mit iOS-SDKs ist, liegt es auch an Ihnen, ob Sie diese installieren oder nicht.

Sie können einen beliebigen Zielordner für Ihre Installation auswählen. Für diese Anleitung habe ich "/Xcode3 " gewählt, kann aber gerne eine andere auswählen. Stellen Sie einfach sicher, dass Sie alle Terminalbefehle entsprechend ändern.

Die hier angegebene Reihenfolge der Schritte ist normalerweise nicht wirklich wichtig, aber ich rate Ihnen dringend, Schritt 1 und Schritt 2 nicht zu vertauschen. Xcode installiert immer ein paar Dateien außerhalb des ausgewählten Zielordners und vertraut mir, am Ende möchten Sie die Xcode4-Versionen dieser Dateien auf Ihrer Festplatte. Wenn Sie Xcode3 vor Xcode4 installieren, können Sie sicher sein, dass Xcode4 diese Dateien bei Bedarf überschreibt. Ich habe einmal die Schritte 1 und 2 getauscht und am Ende hatte ich einige seltsame Probleme, die möglicherweise mit der falschen Reihenfolge zusammenhängen (das kann ich nicht genau sagen, aber nach der Neuinstallation in der richtigen Reihenfolge waren die Probleme verschwunden).

Schritt 2: Installieren von Xcode4

Wähle alle Pakete aus, die du magst. Die Installation von " System Tools " ist ratsam, aber nicht unbedingt erforderlich (obwohl die meisten Leute diese Funktionalität früher oder später vermissen werden).

Sie können auch hier einen beliebigen Zielordner auswählen. Für diese Anleitung habe ich den normalen Zielordner "/Developer " gewählt. Wenn Sie einen anderen wählen, ändern Sie alle Terminalbefehle entsprechend.

Schritt 3: Wiederherstellen der 10.4/10.5 SDK-Unterstützung

Wechseln Sie zu Ihrem Terminalfenster und führen Sie die folgenden Befehle aus:

cD/Developer/SDKs maturiert.

Führen Sie den Befehl natürlich nur für 10.4u aus, wenn Sie in Schritt 1 auch SDK 10.4 installiert haben.

Dies reicht aus, um die SDKs 10.5 (und möglicherweise 10.4) wieder zur Auswahlliste in Xcode4 zu bringen. Probieren Sie es aus, wenn Sie möchten. Starten Sie Xcode4, öffnen Sie ein Projekt und versuchen Sie, das ausgewählte SDK zu ändern. Das war einfach, oder? Schließen Sie Xcode4 unbedingt erneut (die Anwendung, nicht nur das Fenster), bevor Sie mit dem nächsten Schritt fortfahren.

Schritt 4: Wiederherstellung der GCC 4.0-Unterstützung

Wenn Sie MacOS 10.4 SDK nicht installiert haben oder nicht beabsichtigen, es jemals zu verwenden, können Sie diesen Schritt überspringen und mit Schritt 5 fortfahren.

Um SDK 10.4 zu verwenden, müssen Sie GCC 4.0 verwenden, GCC 4.2 funktioniert nicht. Apple behauptet, dass GCC 4.2 nicht mit SDK 10.4 kompatibel ist. Wenn Sie mich fragen, ist dies ein Hoax. Ich habe diese Einschränkungen bereits mehr als einmal überschrieben und es gab nie das kleinste Problem, das dies zur Folge hatte. Es wäre einfach, SDK 10.4 so zu ändern, dass Sie mit Xcode GCC 4.2 verwenden können. Mein Ziel war es jedoch, alle Änderungen an Dateien zu vermeiden. Deshalb fügen wir Xcode wieder die Unterstützung für GCC 4.0 hinzu, was ebenfalls eine gute Sache ist Einige Projekte hängen wirklich von GCC 4.0 ab (z. B. gibt es einige Fehler in GCC 4.2, die verhindern, dass gültiger Inline-Assembly-Code fehlerfrei kompiliert wird, während derselbe Code auf GCC 4.0 und GCC 4.4 fehlerfrei kompiliert wird).

Zurück zum Terminal:

cd /Developer/usr/bin[.____.‹Sudo ln -s /Xcode3/usr/bin/*4.0*. 
 
 cd/Developer/usr/libexec/gcc/powerpc-Apple -darwin10 
 Sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-Apple-darwin10/4.0.1.

Im Moment haben wir die vollständige GCC 4.0-Unterstützung wiederhergestellt, mit der Ausnahme, dass GCC 4.0 in Xcode4 noch nicht auswählbar ist. Das liegt daran, dass Xcode4 kein GCC 4.0-Compiler-Plug-In mehr hat. Glücklicherweise funktioniert das Xcode3-Plugin auch in Xcode4, nur die Position hat sich grundlegend geändert. Apple verbirgt diese Plug-Ins nun tief in einem Bundle und nur die Plug-Ins dort scheinen zu funktionieren. Das Platzieren an ihrer alten Position scheint keine Wirkung zu haben.

cd /Developer/Library/Xcode/PrivatePlugIns[.____.)cd Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins 
 Sudo ln -s "/ Xcode3/Library/Xcode/Plug -ins/GCC 4.0.xcplugin ".

Starten Sie nun Xcode4 erneut, öffnen Sie ein Projekt und versuchen Sie, den Compiler auszuwählen. Sie sollten GCC 4.0 wieder auf der Liste haben. Jetzt können Sie tatsächlich bereits SDK 10.4 oder 10.5, GCC 4.0, auswählen, und Sie sollten kein Problem damit haben, eine PPC-Binärdatei zu erstellen. Wählen Sie einfach " Other ... " für die Build-Einstellung " Architecture " und geben Sie " ppc ", ändern Sie dann" Valid Architectures ", um auch" ppc "einzuschließen. Wir sind fast fertig, außer dass der Versuch, eine PPC-Binärdatei mit GCC 4.2 und SDK 10.5 zu erstellen, immer noch fehlschlägt.

Schritt 5: Wiederherstellen der PPC -Unterstützung für GCC 4.2

Da Apple nur Intel-Plattformen in Xcode4 unterstützt, wurden nicht alle GCC 4.2-Tools mit PPC -Unterstützung erstellt. Es gibt ein wichtiges Tool, das keine PPC-Unterstützung hat. Das Tool heißt " as " und ist der GNU Assembler. Um ppc/ppc64-Binärdateien mit GCC 4.2 zu kompilieren, müssen wir eine " as " -Version mit ppc/ppc64-Unterstützung verwenden. Dies ist die einzige Datei (eigentlich ist es auch ein Symlink), die wir zuerst beiseite schieben müssen (eine Sicherungskopie erstellen), bevor wir sie durch einen Symlink ersetzen können:

cd /Developer/usr/libexec/gcc/powerpc-Apple-darwin10/4.2.1[.____.‹Sudo mv as.bak 
 Sudo ln -s/Xcode3/usr/bin/as.

Schritt 6: Es gibt keinen Schritt 6

Das war's Leute. Wenn man bedenkt, wie einfach das war, kann man sich vorstellen, dass Apple die SDK 10.4/10.5- oder ppc/ppc64- oder GCC 4.0-Unterstützung nicht fallengelassen hat, weil dies eine Notwendigkeit war.

Ich hoffe, dass dieses Setup für Sie genauso gut funktioniert wie für mich. Ich konnte alle meine alten Projekte in Xcode4 ohne größere Änderungen kompilieren, außer dass ich hier und da einen Suchpfad ändern musste.

PS:
Es mag seltsam aussehen, dass ich hier meine eigene Frage beantworte, aber da ich herausgefunden habe, wie ich dieses Problem alleine lösen kann, möchte ich mein Wissen mit der Community teilen, weil ich glaube, dass dies wirklich so ist wertvolle Anregungen für alle MacOS-Entwickler. Diese Frage wurde so oft an so vielen Orten gestellt, und ich habe noch nie jemanden gesehen, der sich eine ähnliche Lösung ausgedacht hat. Teilen Sie den Reichtum, verbreiten Sie das Wissen und so weiter, Sie wissen, was ich meine.


Wenn Sie immer noch Probleme/Fragen haben:

Wenn Sie weitere Fragen zu diesem Thema haben oder immer noch Probleme beim Erstellen Ihrer alten Projekte haben, gehen Sie wie folgt vor: Klicken Sie oben rechts auf dieser Seite auf "Frage stellen" und erstellen Sie eine neue Frage . Auf diese Weise kann die gesamte Community Ihnen bei der Lösung dieser Probleme helfen, da die Probleme möglicherweise nicht direkt (möglicherweise auch nicht indirekt) mit diesem Hack zusammenhängen.

Ich würde empfehlen, dass Sie zu Beginn Ihrer Frage erwähnen, dass Sie diesen Hack angewendet haben. Vielleicht möchten Sie sogar direkt auf diese Frage verweisen, damit Leute, die noch nie von diesem Hack gehört haben, sie leicht nachschlagen können. Andernfalls werden die meisten Leute ziemlich verwirrt, wenn Sie SDK 10.4/10.5, PPC oder GCC 4.0 in Kombination mit Xcode4 erwähnen, das offiziell keines von beiden unterstützt. Wenn Sie diesen Hack nicht erwähnen, erhalten Sie möglicherweise eher dumme Kommentare als anständige Antworten.

Bitte veröffentlichen Sie Ihre Fragen oder Probleme hier weder als Antworten noch als Kommentare. Es macht keinen Sinn, sie als Antworten zu veröffentlichen, da es sich nicht um Antworten handelt und es keine Möglichkeit gibt, wie andere Personen auf Sie antworten oder Kommentare verwenden können. Kommentare bieten möglicherweise nicht genügend Platz für eine angemessene Antwort auf Ihre Frage oder eine angemessene Lösung für Ihre Problem. Wenn Sie sie als Kommentare veröffentlichen, sind Sie auf sehr wenig Platz beschränkt, und die Nachverfolgung von Antwortkommentaren ist schwierig, da Kommentare keine baumartige Hierarchie haben (außerdem bieten sie immer noch zu wenig Platz für angemessene Antworten/Lösungen). Vielen Dank.

Natürlich sind auch andere Kommentare sowie bessere Antworten auf die ursprüngliche Frage immer willkommen ;-)

111
Mecki

Ein weiterer einfacher Weg mit nur Xcode4, Xcode3 wird nicht mehr benötigt.

$ Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
$ Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin

EDITS:

Für Xcode 4.1

Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-Apple-darwin11-cpp-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-Apple-darwin11-gcc-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-g++-4.2.1 /usr/bin/powerpc-Apple-darwin11-g++-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-Apple-darwin11-cpp-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-Apple-darwin11-gcc-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-Apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-Apple-darwin11-g++-4.2.1
Sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-Apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc

Sie können gcc-4.2 nur für PowerPC verwenden. Die Option "-isysroot /Developer/SDKs/MacOSX10.6.sdk" ist erforderlich, da 10.7 SDK PowerPC nicht mehr unterstützt.

15
Kazuki Sakamoto

Ich habe alle Informationen von dieser Seite, den Mac OS X Hints, splhack.org und den anderen hier genannten Quellen zusammengetragen und eine Reihe von BASH-Skripten zusammengestellt, die den Wiederherstellungsprozess von PPC und _ automatisieren GCC 4.0-Unterstützung mit einer XCode 3-Installation oder nur mit XCode 4-eigenen iPhone-Plattformdateien.

Wie immer mit Vorsicht verwenden! und bitte tragen Sie alle Korrekturen oder Verbesserungen. Diese Skripte wurden ab diesem Posting nur auf meinem eigenen System getestet.

Sie können sie von GitHub herunterladen:

8
Scott Lahteine

Wenn Sie möchten, dass gcc auch über die Befehlszeile funktioniert, müssen Sie (wie oben beschrieben) außerdem Folgendes tun:

cd /usr/libexec/gcc/powerpc-Apple-darwin10/4.2.1
Sudo mv as as.bak
Sudo ln -s /Xcode3/usr/bin/as .
4
jas

Dies funktioniert immer noch mit Xcode 4.3.2 aus dem AppStore - der Version, in der alles in einem App-Bundle enthalten ist. Installieren Sie wie im ursprünglichen Hinweis zuerst Xcode 3.2.6 * und laden Sie dann Xcode 4 aus dem AppStore herunter. Dann mache die folgende Symlink-Magie:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
ln -s /Developer/Xcode3.2.6/SDKs/MacOSX10.5.sdk .
cd /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/bin/
ln -s /Developer/Xcode3.2.5/usr/llvm-gcc-4.2/bin/powerpc-Apple-darwin10-llvm-g* .
mv powerpc-Apple-darwin10-llvm-gcc-4.2 powerpc-Apple-darwin11-llvm-gcc-4.2
mv powerpc-Apple-darwin10-llvm-g++-4.2 powerpc-Apple-darwin11-llvm-g++-4.2

Die letzten beiden Zeilen im Symlink benennen Sie darwin10 in darwin11 um. Ich gehe davon aus, dass zukünftige Versionen von OS X eine entsprechende Aktualisierung erfordern werden.

  • Um Xcode 3.2.x auf Lion zu installieren, hängen Sie das Xcode-Image ein, öffnen Sie das Terminal, geben Sie die Befehle ein (mit bash oder den entsprechenden Befehlen, wenn Sie Ihre Standard-Shell geändert haben):

    export COMMAND_LINE_INSTALL = 1 open "/ Volumes/Xcode und iOS SDK/Xcode und iOS SDK.mpkg"

Sie müssen außerdem die Uhr auf ein Datum vor dem 31. März 2012 zurücksetzen, da sonst die Überprüfung der Sicherheitszertifikate während der Installation fehlschlägt. Sie können das Datum nach der Installation natürlich wieder sicher ändern!

3
Avram

Frédéric Devernay hat ein GitHub-Projekt mit dem Namen xcodelegacy , das für Xcode 5.1.1 fantastisch funktioniert und sehr wenig Arbeit erfordert, nur ein paar Downloads .

Mit seinem Projekt habe ich es geschafft, universelle Binärdateien zu erstellen, die sowohl ppc- als auch i386-Architekturen enthalten, die mit dem 10.4 SDK unter Verwendung von GCC 4.0 kompiliert wurden, und zwar alle in Xcode 5.1.1, das unter Yosemite ausgeführt wird.

Ich habe mich verifiziert, dass die erstellten universellen Binärdateien in 10.5 Leopard und in Yosemite selbst einwandfrei funktionieren.

Homepage hier: http://devernay.free.fr/hacks/xcodelegacy

Git-Hub-Projekt hier: https://github.com/devernay/xcodelegacy

2
Aidan

Falls jemand alte SDKs und PPC Compiler in Xcode 4.3 und 4.5 wiederherstellen muss, ist dies ein Skript, das ich mir ausgedacht habe. Beachten Sie, dass Sie den Pfad zum Xcode-App-Bundle und den Pfad zu festlegen müssen Xcode 3.2.6 wird am Anfang des Skripts installiert.

#!/bin/bash

XCODE="/Applications/Xcode45-DP1.app"
XCODE3="/Xcode3"

# restore SDKs
cd "$XCODE/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
Sudo ln -s "$XCODE3/SDKs/MacOSX10.4u.sdk" .
Sudo ln -s "$XCODE3/SDKs/MacOSX10.5.sdk" . 
Sudo ln -s "$XCODE3/SDKs/MacOSX10.6.sdk" . 

# restore gcc 4.0
cd "$XCODE/Contents/Developer/usr/bin"
Sudo ln -s "$XCODE3/usr/bin/"*4.0* .
Sudo ln -s "powerpc-Apple-darwin10-g++-4.0.1" "powerpc-Apple-darwin11-g++-4.0.1"
Sudo ln -s "powerpc-Apple-darwin10-gcc-4.0.1" "powerpc-Apple-darwin11-gcc-4.0.1"

# restore Xcode option
cd "$XCODE/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
Sudo ln -s "$XCODE3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" . 

Sie brauchen kein 10.6 SDK zu verknüpfen, wenn Sie Xcode 4.3 verwenden, da es mit einem ausgeliefert wird.

Außerdem stellt das Skript gcc 4.2 nicht wieder her, da dabei viele Dateinamenskonflikte auftreten. Mein Ziel ist es, PPC Compiler und 4.0 ist gut genug für mich.

2
Stephen Chu

Es wäre nützlich, ein Paket zu haben, um diese Dateien einfach in einer XCode 4-Implementierung zu installieren. (oder ein Tarball).

Zu Ihrer Information: 3.2.6 von Xcode3 enthält keine wie bei ppc Architektur. Aber ich hatte eine Sicherungskopie von Leopard auf meinem Computer. Also habe ich diesen kopiert, scheint zu funktionieren. (Verwenden Sie/usr/libexec/gcc/darwin/ppc/as).

Wenn man bedenkt, dass sowohl gcc als auch as Open Source sind, ist das einzige Material, das möglicherweise nicht weiterverbreitet werden kann, das xcode-Plugin und das 10.4-SDK, oder?

1
Jason Kenney