Jak możemy przywrócić obsługę ppc / ppc64, a także pełnej obsługi SDK 10.4 / 10.5 do Xcode 4?

93

Ponieważ Apple dostarcza SDK 10.6 tylko z Xcode4, tworzenie aplikacji PPC z Xcode4 stało się niemożliwe. Chociaż możliwe jest tworzenie aplikacji za pomocą Xcode4, które mogą również działać w systemach 10.5, a może nawet w systemach 10.4 (wybierając SDK 10.6, ale cel wdrożenia 10.5 lub 10.4), będą one działać tylko na komputerach Mac z procesorem Intel, ponieważ potrzebujesz co najmniej SDK 10.5 dla budowanie aplikacji PPC.

Ponadto istnieją rzadkie przypadki, w których naprawdę musisz zbudować na SDK przed 10.6, aby uzyskać pełną obsługę platformy, np. Jeśli niektóre przestarzałe funkcje zniknęły całkowicie z zestawu SDK 10.6, ale będziesz musiał z nich korzystać, a dynamiczne łączenie nie jest zawsze najlepsza opcja w takich przypadkach. Również łączenie z wcześniejszym SDK czasami ułatwia programowanie, ponieważ funkcjonalność, której nie powinieneś używać, ponieważ spowodowałaby niekompatybilność z wcześniejszymi wersjami systemu operacyjnego, nie będzie dostępna, a każda próba jej użycia i tak natychmiast prowadzi do błędów kompilatora lub linkera.

Wreszcie Apple usunęło również obsługę GCC 4.0 z Xcode4, co może być konieczne do prawidłowego zbudowania niektórych programów, a Apple nigdy nie zezwalało na kompilowanie oprogramowania z GCC 4.2 podczas korzystania z SDK 10.4, chociaż nie wierzę, że to naprawdę spowodowałoby wszelkie problemy, ponieważ całe oprogramowanie zbudowane przy użyciu GCC 4.2 i SDK 10.6 może również działać w systemie Mac OS 10.4 bez żadnych problemów, o ile cel wdrożenia został poprawnie ustawiony i nie została użyta żadna funkcjonalność niedostępna w systemie MacOS 10.4.

Oczywiście zawsze możesz mieć równoległą instalację Xcode3 obok Xcode4, ale oznacza to, że musisz zrezygnować ze wszystkich (świetnych?) Nowych funkcji Xcode4 i kontynuować pracę z przestarzałym Xcode3 IDE. Z pewnością byłoby znacznie lepiej, gdybyś mógł również zarządzać wszystkimi swoimi starymi projektami w tym samym środowisku IDE, co nowe i korzystać z wszelkich dostępnych nowych funkcji. Nie wszystkie projekty można zrealizować w wersji 10.6 lub Intel tylko w dającej się przewidzieć przyszłości. Ponadto jestem zdecydowanie przeciwny zniesieniu obsługi starszych platform wcześniej, niż byłoby to naprawdę konieczne.

Czy możemy przywrócić tę funkcjonalność do Xcode4?

Mecki
źródło

Odpowiedzi:

111

Szybka odpowiedź brzmi: tak, możemy!

Zanim przejdę do części „ jak to się robi ”, oto kilka uwag na temat mojej łatki / hakowania / poprawki. Od samego początku głównymi celami były:

  1. Ogranicz wszystkie modyfikacje do absolutnego minimum.
    Chcemy, aby ustawienia Xcode były jak najbardziej oryginalne.

  2. Jak najbardziej, staraj się unikać łatania lub modyfikowania jakichkolwiek plików.
    Chcemy, aby wszystkie pliki pozostały nietknięte i zachowały oryginalną zawartość.

  3. Staraj się unikać przenoszenia lub kopiowania plików, chyba że jest to absolutnie konieczne.

Udało mi się zachować wszystkie te cele. Prawie wszystko odbywa się poprzez tworzenie dowiązań symbolicznych. Musiało zostać zastąpione tylko jedno istniejące łącze symboliczne i na wszelki wypadek utworzymy jego kopię zapasową przed wymianą.

Jeśli nie jesteś ekspertem w operacjach terminalowych, zdecydowanie radzę skopiować / wkleić wszystkie polecenia terminala z mojej odpowiedzi na twój terminal, aby uniknąć literówek. Pamiętaj, że równe odstępy, cytowanie, a zwłaszcza wielkie litery mogą być ważne. Skopiuj / wklej je wiersz po wierszu, nigdy więcej niż jeden wiersz na raz i naciśnij klawisz powrotu po każdym wklejonym wierszu, aby wykonać polecenie. Jeśli jakakolwiek operacja zażąda hasła, będzie to hasło aktualnie zalogowanego użytkownika administratora (naciśnięcia klawiszy nie są wyświetlane podczas pisania, jest to normalne, nie martw się, po prostu wpisuj hasło i naciśnij klawisz powrotu; ponownie -próbować, jeśli popełniono literówkę i ponownie pojawi się monit).

Warunek wstępny

Zanim zaczniemy, upewnij się, że są spełnione następujące warunki:

  • Jesteś zalogowany jako administrator.
  • Uruchomiłeś Terminal.app (Aplikacje / Narzędzia) i otwarte jest okno terminala.
  • Masz kopię Xcode3 (np. 3.2.5) i obraz dysku Xcode4 (DMG) lub instalator.
  • Jeśli masz już zainstalowaną wersję Xcode, rozważ najpierw jej odinstalowanie , aby móc rozpocząć od nowej / czystej konfiguracji. Odinstalowanie Xcode nie spowoduje usunięcia Twoich preferencji, schematu kolorów ani dostosowań przypisań klawiszy. Najlepiej byłoby zacząć od systemu, który nie ma obecnie zainstalowanej wersji Xcode (ani 3, ani 4).

Krok 1: Instalacja Xcode3

Ważne : nie instaluj pakietu „ Narzędzia systemowe ” ani „ Programowanie Unix ” Xcode3.
To, czy chcesz zainstalować „ Mac OS X 10.4 SDK ” i / lub „ Documentation ”, zależy od Ciebie. Jeśli jest to Xcode3 z pakietami SDK systemu iOS, to od Ciebie zależy, czy je zainstalujesz, czy nie.

Możesz wybrać dowolny folder docelowy dla swojej instalacji. W tym przewodniku wybrałem " / Xcode3 ", ale możesz wybrać inny. Tylko pamiętaj, aby odpowiednio zmienić wszystkie polecenia terminala.

Kolejność kroków podana tutaj zwykle nie jest naprawdę ważna, ale zdecydowanie odradzam zamianę kroku 1 i kroku 2. Xcode zawsze instaluje kilka plików poza wybranym folderem docelowym i zaufaj mi, w końcu chcesz Wersje Xcode4 tych plików na dysku. Instalując Xcode3 przed Xcode4, możesz mieć pewność, że Xcode4 nadpisze te pliki, jeśli to konieczne. Kiedyś zamieniłem kroki 1 i 2 i na końcu miałem dość dziwne problemy, które mogły być związane z nieprawidłową kolejnością (nie mogę powiedzieć na pewno, ale po ponownej instalacji we właściwej kolejności problemy zniknęły).

Krok 2: Instalacja Xcode4

Wybierz dowolne pakiety. Instalacja „ Narzędzi systemowych ” jest wskazana, ale nie jest bezwzględnie konieczna (chociaż większość ludzi prędzej czy później przegapi tę funkcję).

Ponownie, możesz wybrać dowolny folder docelowy. W tym przewodniku wybrałem normalny folder docelowy „ / Developer ”, jeśli wybierzesz inny, odpowiednio zmień wszystkie polecenia terminala.

Krok 3: Przywracanie obsługi SDK 10.4 / 10.5

Przejdź do okna terminala i uruchom następujące polecenia:

cd / Developer / SDK
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk.
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk.

Oczywiście uruchom polecenie tylko dla 10.4u, jeśli zainstalowałeś również SDK 10.4 w kroku 1.

To wystarczy, aby zestawy SDK 10.5 (i prawdopodobnie 10.4) powróciły na listę wyboru w Xcode4. Spróbuj, jeśli chcesz. Uruchom Xcode4, otwórz projekt, spróbuj zmienić wybrany SDK. To było łatwe, co? Pamiętaj, aby ponownie zamknąć Xcode4 (aplikację, a nie tylko okno) przed przejściem do następnego kroku.

Krok 4: Przywracanie obsługi GCC 4.0

Jeśli nie masz zainstalowanego zestawu SDK systemu MacOS 10.4 lub nie planujesz go nigdy używać, możesz bezpiecznie pominąć ten krok i przejść do kroku 5.

Aby używać SDK 10.4, będziesz musiał używać GCC 4.0, GCC 4.2 nie będzie działać. Apple twierdzi, że GCC 4.2 nie jest kompatybilne z SDK 10.4, cóż, jeśli o mnie chodzi, to mistyfikacja. Już nie raz nadpisałem te ograniczenia i nigdy nie było z tego powodu najmniejszego problemu. Byłoby łatwo zmodyfikować SDK 10.4 tak, aby Xcode pozwolił na użycie GCC 4.2, ale moim celem było uniknięcie wszelkich modyfikacji plików, więc po prostu dodamy obsługę GCC 4.0 z powrotem do Xcode, co również jest dobre, ponieważ niektóre projekty naprawdę zależą od GCC 4.0 (np. jest kilka błędów w GCC 4.2, które uniemożliwiają poprawnemu wbudowanemu kodowi asemblerowemu kompilację bez błędów, podczas gdy ten sam kod bezbłędnie kompiluje się na GCC 4.0 i GCC 4.4).

Powrót do terminala:

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.

W tej chwili przywróciliśmy pełną obsługę GCC 4.0, z wyjątkiem faktu, że GCC 4.0 nadal nie jest dostępny w Xcode4. Dzieje się tak, ponieważ Xcode4 nie ma już wtyczki kompilatora GCC 4.0. Na szczęście wtyczka Xcode3 działa również w Xcode4, tylko pozycja uległa radykalnej zmianie. Apple ukrywa teraz te wtyczki głęboko w pakiecie i tylko te wtyczki wydają się działać, a umieszczenie ich w ich starej pozycji wydaje się nie mieć żadnego efektu.

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".

Teraz ponownie uruchom Xcode4, otwórz projekt i spróbuj wybrać kompilator. Powinieneś mieć ponownie GCC 4.0 na liście. Teraz możesz już wybrać SDK 10.4 lub 10.5, GCC 4.0 i nie powinieneś mieć problemu z budowaniem pliku binarnego PPC. Po prostu wybierz „ Inne ... ” dla ustawienia kompilacji „ Architektura ” i ręcznie wprowadź „ ppc ”, a następnie zmień „ Prawidłowe architektury ”, aby uwzględnić również „ ppc ”. Prawie skończyliśmy, poza tym, że próba zbudowania pliku binarnego PPC przy użyciu GCC 4.2 i SDK 10.5 i tak zakończy się niepowodzeniem.

Krok 5: Przywracanie obsługi PPC dla GCC 4.2

Ponieważ Apple obsługuje tylko platformy Intel w Xcode4, nie wszystkie narzędzia GCC 4.2 zostały zbudowane z obsługą PPC. Jest jedno ważne narzędzie, które nie obsługuje PPC, nazywa się je „ as ” i jest nim GNU Assembler. Aby skompilować pliki binarne ppc / ppc64 z GCC 4.2, musimy użyć wersji " as " z obsługą ppc / ppc64. Jest to jedyny plik (w rzeczywistości jest to również link symboliczny), który musimy najpierw przenieść na bok (zrobić kopię zapasową), zanim będziemy mogli go zastąpić dowiązaniem symbolicznym:

cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s / Xcode3 / usr / bin / as.

Krok 6: Nie ma kroku 6

To wszystko ludzie. Biorąc pod uwagę, jakie to było łatwe, możesz sobie wyobrazić, że Apple z pewnością nie zrezygnował z obsługi SDK 10.4 / 10.5 lub ppc / ppc64 lub GCC 4.0, ponieważ była to konieczność, porzucili to wszystko, ponieważ chcieli go porzucić.

Mam nadzieję, że ta konfiguracja działa równie dobrze dla Ciebie, jak i dla mnie. Udało mi się skompilować wszystkie moje stare projekty w Xcode4 bez większych zmian, z wyjątkiem konieczności zmiany ścieżki wyszukiwania tu i tam.

PS:
Może wydawać się dziwne, że odpowiadam tutaj na własne pytanie, ale ponieważ sam odkryłem, jak rozwiązać ten problem, chciałbym podzielić się swoją wiedzą ze społecznością, ponieważ uważam, że jest to naprawdę cenny wkład w wszyscy programiści MacOS. To pytanie było zadawane tyle razy w tak wielu miejscach i jak dotąd nigdy nie widziałem, aby ktoś wymyślił podobną poprawkę. Dziel się bogactwem, rozpowszechniaj wiedzę i tak dalej, wiesz, co mam na myśli.


Jeśli nadal masz problemy / pytania:

Jeśli masz dodatkowe pytania dotyczące tego tematu lub nadal masz problemy z poprawnym zbudowaniem starych projektów, zrób to, do czego zostało zaprojektowane Stack Overflow: Kliknij "Zadaj pytanie" w prawym górnym rogu tej strony i utwórz nowe pytanie . W ten sposób cała społeczność może pomóc w rozwiązaniu tych problemów, ponieważ mogą one nie być bezpośrednio (może nawet pośrednio) związane z tym hackiem.

Poleciłbym wspomnieć o tym, że zastosowałeś ten hack na samym początku swojego pytania. Może nawet zechcesz umieścić bezpośredni link do tego pytania, aby osoby, które nigdy nie słyszały o tym włamaniu, mogły je łatwo znaleźć. W przeciwnym razie większość ludzi będzie raczej zdezorientowana, gdy wspomnisz o SDK 10.4 / 10.5, PPC lub GCC 4.0 w połączeniu z Xcode4, który oficjalnie nie obsługuje żadnego z nich. Możesz otrzymać raczej głupie komentarze zamiast przyzwoitych odpowiedzi, jeśli zapomnisz wspomnieć o tym włamaniu.

Prosimy o powstrzymanie się od publikowania tutaj swoich pytań lub problemów jako odpowiedzi lub komentarzy. Umieszczanie ich jako odpowiedzi nie ma sensu, ponieważ nie są one odpowiedziami i nie ma sposobu, w jaki ludzie mogą ci odpowiadać, inaczej niż za pomocą komentarzy, a komentarze mogą nie oferować wystarczająco dużo miejsca na przyzwoitą odpowiedź na twoje pytanie lub przyzwoite rozwiązanie twojego problem. Umieszczanie ich jako komentarzy oznacza, że ​​jesteś ograniczony do bardzo małej przestrzeni, a śledzenie komentarzy w odpowiedziach będzie trudne, ponieważ komentarze nie mają hierarchii drzewiastej (ponadto nadal będą oferować niewiele miejsca na przyzwoite odpowiedzi / rozwiązania). Dziękuję Ci.

Oczywiście inne komentarze, jak również lepsze odpowiedzi na pierwotne pytanie są zawsze mile widziane ;-)

Mecki
źródło
6
Oto głos za. Prawdopodobnie skopiuję stare SDK i pliki kompilatora zamiast po prostu je dowiązać symbolicznie, aby móc odinstalować resztę Xcode3. Nie dlatego, że kocham Xcode4; tylko dlatego, że potrzebuję miejsca na dysku. Dzięki!
Ivan Vučica
Nie mogę zmusić tego do pracy. Proszę zobaczyć moje pytanie SO: stackoverflow.com/questions/5409860/ ...
paleozogt
Oprócz tego, aby uzyskać kompilację gcc 4.0 dla celów i686, musiałem wykonać następujące czynności: sudo ln -s /Xcode3/usr/libexec/gcc/i686-apple-darwin10/4.0.1 / Developer / usr / libexec / gcc / i686-apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / Developer / usr / lib / gcc / i686- apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / usr / lib / gcc / i686-apple-darwin10 /
Mark Carey
2
Tę linię for SRC_FILE in /Xcode3/usr/bin/*4.0*; do sudo ln -s "$SRC_FILE" .; donemożna uprościć dosudo ln -s /Xcode3/usr/bin/*4.0* .
Adam Rosenfield
1
@cullub Przejdź do developer.apple.com , zaloguj się za pomocą swojego identyfikatora programisty, wybierz „SDK”, przewiń w dół i wybierz „Xcode”, wybierz „Pobierz”, przewiń w dół i wybierz „Dodatkowe narzędzia”, wyszukaj „Xcode 3” w polu wyszukiwania.
Mecki
15

Kolejny łatwy sposób z samym Xcode4, Xcode3 nie jest już potrzebny.

$ 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

EDYCJE:

W przypadku 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

Możesz używać gcc-4.2 tylko dla PowerPC. A opcja „-isysroot /Developer/SDKs/MacOSX10.6.sdk” jest wymagana, ponieważ 10.7 SDK nie obsługuje już PowerPC.

Kazuki Sakamoto
źródło
3
LOL, więc Apple obsługuje PPC w kompilatorze iOS :-P Jednak może powinieneś zauważyć, że przywróci to tylko kompatybilność PPC, ale nie przywróci obsługi SDK ani GCC4.0. Wciąż warty uznania.
Mecki,
Bardzo hackerskie i prostsze niż powyższe, wymagane absolutne minimum.
Diziet
Włącz łańcuch narzędzi PowerPC w Xcode 4.1 . Tylko gcc-4.2. Wymaga opcji "-isysroot /Developer/SDKs/MacOSX10.6.sdk", ponieważ 10.7 SDK nie ma już nagłówków dla PowerPC.
Kazuki Sakamoto,
stackoverflow.com/questions/11989007 jest odpowiedni do uzyskania zestawu SDK 10.6. czyli jest w Xcode 4.1
fommil
8

Zebrałem wszystkie informacje z tej strony, Mac OS X Hints, splhack.org i inne cytowane tutaj źródła i przygotowałem zestaw skryptów BASH, które automatyzują proces przywracania obsługi PPC i GCC 4.0 przy użyciu Instalacja XCode 3 lub tylko własne pliki platformy iPhone'a XCode 4.

Jak zawsze, używaj ostrożnie! i prosimy o wszelkie poprawki lub ulepszenia. Te skrypty były testowane tylko na moim własnym systemie do chwili opublikowania tego posta.

Możesz je pobrać z GitHub:

Scott Lahteine
źródło
Wow, całkiem fajnie :-) Sam chciałem zrobić taki scenariusz, ale nigdy nie miałem na to czasu. Dzięki za udostępnienie go nam.
Mecki
4

Jeśli chcesz, aby gcc działało również z wiersza poleceń (a także z powyższego), musisz również:

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .
jas
źródło
3

To nadal działa z Xcode 4.3.2 z AppStore - wersji, w której wszystko jest niezależne w pakiecie aplikacji. Zgodnie z oryginalną wskazówką, najpierw zainstaluj Xcode 3.2.6 *, a następnie pobierz Xcode 4 z AppStore. Następnie wykonaj następującą magię linków symbolicznych:

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

Ostatnie dwie linie zmieniają nazwę darwin10 na darwin11 w dowiązaniu symbolicznym - zgaduję, że przyszłe wersje OS X będą wymagały odpowiedniej aktualizacji.

  • Aby zainstalować Xcode 3.2.x na Lion, zamontuj obraz dysku Xcode, otwórz Terminal, wprowadź polecenia (używając bash lub równoważnych poleceń, jeśli zmieniłeś domyślną powłokę):

    eksportuj COMMAND_LINE_INSTALL = 1 otwórz "/ Volumes / Xcode i iOS SDK / Xcode i iOS SDK.mpkg"

Konieczne będzie również przestawienie zegara na datę sprzed 31 marca 2012 r., W przeciwnym razie certyfikaty bezpieczeństwa nie zostaną sprawdzone podczas instalacji. Oczywiście możesz bezpiecznie zmienić datę z powrotem po instalacji!

Avram
źródło
2

Na wypadek, gdyby ktoś chciał przywrócić stare SDK i kompilator PPC w Xcode 4.3 i 4.5, to jest skrypt, który wymyśliłem. Należy pamiętać, że na początku skryptu należy ustawić ścieżkę do pakietu aplikacji Xcode i ścieżkę do instalacji Xcode 3.2.6.

#!/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" . 

Nie musisz łączyć symbolicznego zestawu SDK 10.6, jeśli używasz Xcode 4.3, ponieważ jest on wyposażony w jeden.

Skrypt nie przywraca również gcc 4.2, ponieważ powoduje to wiele konfliktów nazw plików. Moim celem jest przywrócenie kompilatora PPC, a 4.0 jest dla mnie wystarczająco dobry.

Stephen Chu
źródło
2

Frédéric Devernay ma projekt GitHub o nazwie xcodelegacy, który działa fantastycznie na Xcode 5.1.1 i wymaga bardzo mało pracy, aby go uruchomić, wystarczy pobrać.

Korzystając z jego projektu, udało mi się stworzyć uniwersalne pliki binarne zawierające zarówno architektury ppc, jak i i386 skompilowane za pomocą zestawu SDK 10.4 przy użyciu GCC 4.0, a wszystko to z poziomu Xcode 5.1.1 działającego na Yosemite.

Sam sprawdziłem, że utworzone uniwersalne pliki binarne działają dobrze w systemie 10.5 Leopard i na samym Yosemite.

Strona główna tutaj: http://devernay.free.fr/hacks/xcodelegacy

Projekt centrum Git tutaj: https://github.com/devernay/xcodelegacy

Aidan
źródło
1

Przydałby się pakiet, który po prostu zainstaluje te pliki w implementacji XCode 4. (lub archiwum tar).

FYI: 3.2.6 Xcode3 nie zawiera as z architekturą ppc. Ale miałem kopię zapasową Leoparda na moim komputerze. Więc skopiowałem ten, wydaje się, że działa. (Użyj / usr / libexec / gcc / darwin / ppc / as).

Biorąc pod uwagę, że zarówno gcc, jak i open source, jedynymi rzeczami, których nie można redystrybuować, jest wtyczka xcode i zestaw SDK 10.4, prawda?

Jason Kenney
źródło
Nie jestem ekspertem w kwestiach licencyjnych; „as -v” mówi „Apple Inc w wersji cctools-795 ~ 45, GNU assembler w wersji 1.38”, jednak nawet jeśli Apple zmodyfikował kod źródłowy „as”, nadal jest on objęty licencją GPL (zmodyfikowany kod GPL jest automatycznie Kod GPL ponownie), więc jeśli pozwala na to GPL, powinno być dobrze.
Mecki,
Okay, przypuszczam, że moje rozumowanie, dlaczego musimy zastąpić „jako”, było błędne. Wydaje się, że „as” w Xcode 3.2.6 również działa, mimo że jest to tylko Intel, ale nadal wydaje się, że jest w stanie tworzyć dane wyjściowe zestawu ppc. Poprawię swoją początkową odpowiedź. Dzięki za zwrócenie uwagi!
Mecki,
Właściwie przynajmniej z wiersza poleceń tak nie jest. Narzekał, dopóki nie złapałem go z kopii zapasowej Leoparda.
Jason Kenney