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:
Ogranicz wszystkie modyfikacje do absolutnego minimum.
Chcemy, aby ustawienia Xcode były jak najbardziej oryginalne.
Jak najbardziej, staraj się unikać łatania lub modyfikowania jakichkolwiek plików.
Chcemy, aby wszystkie pliki pozostały nietknięte i zachowały oryginalną zawartość.
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 ;-)
for SRC_FILE in /Xcode3/usr/bin/*4.0*; do sudo ln -s "$SRC_FILE" .; done
można uprościć dosudo ln -s /Xcode3/usr/bin/*4.0* .
Kolejny łatwy sposób z samym Xcode4, Xcode3 nie jest już potrzebny.
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.
źródło
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:
źródło
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 .
źródło
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!
źródło
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.
źródło
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
źródło
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?
źródło