Как мы можем восстановить ppc / ppc64 и полную поддержку 10.4 / 10.5 SDK в Xcode 4? - PullRequest
93 голосов
/ 17 марта 2011

Поскольку Apple поставляет SDK 10.6 только с Xcode4, разработка приложений PPC с Xcode4 стала невозможной.Хотя можно разрабатывать приложения с Xcode4, которые также могут работать на 10.5 и, возможно, даже на 10.4 системах (выбрав SDK 10.6, но цель развертывания 10.5 или 10.4), они будут работать только на Intel Mac, потому что вам нужен как минимум SDK 10.5 длясборка приложений PPC.

Кроме того, существуют редкие случаи, когда вам действительно необходимо выполнить сборку с использованием SDK до 10.6 для полной поддержки платформы, например, если некоторые устаревшие функции полностью исчезли из 10.6 SDK, но вы 'Вам придется использовать его, и динамическое связывание не всегда является лучшим вариантом в таких случаях.Кроме того, связывание с более ранним SDK иногда облегчает разработку, поскольку функциональность, которую вы не должны использовать, так как это приведет к несовместимости с более ранними версиями ОС, будет недоступна, и любая попытка использовать ее в любом случае немедленно приведет к ошибкам компилятора или компоновщика.

И последнее, но не менее важное: Apple также удалила поддержку GCC 4.0 из Xcode4, которая может быть необходима для правильной сборки определенного программного обеспечения, и Apple никогда не позволяла компилировать программное обеспечение с GCC 4.2 при использовании SDK 10.4, хотя я вряд ли верючто это действительно вызовет какие-либо проблемы, после того, как все программное обеспечение, созданное с помощью GCC 4.2 и SDK 10.6, также может работать на Mac OS 10.4 без каких-либо проблем, если цель развертывания установлена ​​правильно и не используется функциональность, недоступная в MacOS 10.4.

Конечно, у вас всегда может быть параллельная установка Xcode3 рядом с Xcode4, но это означает, что вы должны отказаться от всех (замечательных?) Новых функций Xcode4 и продолжать работать с устаревшим Xcode3IDE.Конечно, было бы намного лучше, если бы вы могли также управлять всеми своими старыми проектами в той же IDE, что и новые, и пользоваться всеми новыми доступными функциями.Не все проекты 10,6 или Intel могут быть выполнены только в обозримом будущем.Кроме того, я категорически против отмены поддержки более старых платформ раньше, чем было бы действительно необходимо.

Можем ли мы восстановить эту функциональность в Xcode4?

Ответы [ 8 ]

111 голосов
/ 17 марта 2011

Быстрый ответ: Да, мы можем!

Прежде чем я перейду к части " как это делается ", вот несколько заметок о моем патче / хаке / исправлении. С самого начала основными целями были:

  1. Держите все модификации в абсолютном минимуме.
    Мы хотим, чтобы настройки Xcode были как можно более оригинальными.

  2. Во что бы то ни стало, старайтесь избегать исправления или изменения каких-либо файлов.
    Мы хотим, чтобы все файлы оставались нетронутыми и сохраняли свое первоначальное содержимое.

  3. Старайтесь избегать перемещения или копирования файлов, если в этом нет крайней необходимости.

Мне удалось сохранить все эти цели. Почти все делается путем создания символических ссылок. Нужно было заменить только одну существующую символическую ссылку, и мы заархивируем ее перед заменой, на всякий случай.

Если вы не являетесь экспертом по работе с терминалами, я настоятельно советую вам скопировать / вставить все команды терминала из моего ответа на ваш терминал, чтобы избежать опечаток. Имейте в виду, что даже интервалы, цитирование и особенно заглавные буквы могут быть важны. Копируйте / вставляйте их построчно, но не более одной строки одновременно и нажимайте клавишу возврата после каждой вставленной строки, чтобы выполнить команду. Если какая-либо операция когда-нибудь запросит у вас пароль, это будет пароль текущего зарегистрированного пользователя-администратора (ваши нажатия клавиш не отображаются при наборе текста, это нормально, не беспокойтесь, просто продолжайте вводить пароль и нажмите return; re -Попробуйте, если у вас была опечатка и вас снова попросят).

Предпосылка

Прежде чем мы сможем начать, убедитесь, что выполняются следующие условия:

  • Вы вошли как администратор.
  • Вы запустили Terminal.app (Приложения / Утилиты) и открылось окно терминала.
  • У вас есть копия образа диска Xcode3 (например, 3.2.5) и образа Xcode4 (DMG) или программа установки.
  • Если у вас уже установлена ​​какая-либо из версий Xcode, сначала рассмотрите возможность ее удаления , чтобы вы могли начать с новой / чистой настройки. Удаление Xcode не удалит ваши настройки, цветовую схему или настройки привязки клавиш. В идеале вы должны начать с системы, в которой в настоящее время не установлена ​​версия Xcode (ни 3, ни 4).

Шаг 1: установка Xcode3

Важно : Не устанавливать пакет Xcode3 " Системные инструменты " или " Unix Development ".
Если вы хотите установить « Mac OS X 10.4 SDK » и / или « Documentation », решать вам. Если это Xcode3 с iOS SDK, устанавливать вы их или нет, также зависит от вас.

Вы можете выбрать любую папку для установки. Для этого руководства я выбрал " / Xcode3 ", но не стесняйтесь выбирать другой. Просто убедитесь, что изменили все команды терминала соответственно.

Порядок действий, приведенный здесь, обычно не очень важен, но я настоятельно советую вам не менять местами шаги 1 и 2. Xcode всегда устанавливает пару файлов за пределы выбранной папки назначения и, в конце концов, доверяет мне вам нужны версии Xcode4 этих файлов на вашем диске. Установив Xcode3 до Xcode4, вы можете быть уверены, что Xcode4 перезапишет эти файлы, если это необходимо. Однажды я поменял местами шаги 1 и 2, и в итоге у меня возникли довольно странные проблемы, которые могли быть связаны с неправильным порядком (точно сказать не могу, но после переустановки в правильном порядке проблемы исчезли).

Шаг 2: установка Xcode4

Выбирайте любые пакеты, которые вам нравятся. Установка " Системные инструменты " рекомендуется, но не является строго необходимой (хотя большинство людей рано или поздно пропустят эту функцию).

Опять же, не стесняйтесь выбирать любую целевую папку, которая вам нравится. Для этого руководства я выбрал обычную целевую папку " / Developer ", если вы выберете другую, измените все команды терминала соответственно.

Шаг 3. Восстановление поддержки SDK 10.4 / 10.5

Переключитесь в окно терминала и выполните следующие команды:

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

Конечно, запускайте команду только для 10.4u, если вы также установили SDK 10.4 на шаге 1.

Этого достаточно, чтобы вернуть SDK 10.5 (и, возможно, 10.4) в список выбора в Xcode4. Попробуйте, если хотите. Запустите Xcode4, откройте проект, попробуйте изменить выбранный SDK. Это было легко, а? Обязательно закройте Xcode4 снова (приложение, а не только окно), прежде чем переходить к следующему шагу.

Шаг 4. Восстановление поддержки GCC 4.0

Если вы не установили MacOS 10.4 SDK или не планируете его использовать, вы можете спокойно пропустить этот шаг и перейти к шагу 5.

Чтобы использовать SDK 10.4, вам придется использовать GCC 4.0, GCC 4.2 не будет работать. Apple утверждает, что GCC 4.2 не совместима с SDK 10.4, ну, если вы спросите меня, это обман. Я уже перезаписывал эти ограничения не раз, и из-за этого никогда не было ни малейшей проблемы. Было бы легко изменить SDK 10.4 так, чтобы Xcode позволял вам использовать для него GCC 4.2, но моя цель состояла в том, чтобы избежать всех модификаций файлов, поэтому мы просто добавляем поддержку GCC 4.0 обратно в XCode, что тоже хорошо, потому что некоторые проекты действительно зависят от GCC 4.0 (например, в GCC 4.2 есть некоторые ошибки, препятствующие правильной компиляции кода встроенной сборки без ошибок, в то время как тот же код безупречно компилируется в GCC 4.0 и GCC 4.4).

Вернуться к терминалу:

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 .

В настоящее время мы восстановили полную поддержку GCC 4.0, за исключением того факта, что GCC 4.0 по-прежнему нельзя выбрать в Xcode4. Это связано с тем, что Xcode4 больше не имеет подключаемого модуля компилятора GCC 4.0. К счастью, плагин Xcode3 также работает в Xcode4, только положение радикально изменилось. Apple теперь скрывает эти плагины глубоко внутри пакета, и, похоже, только плагины там работают, их размещение в прежнем положении, кажется, не имеет никакого эффекта.

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

Теперь снова запустите Xcode4, откройте проект и попробуйте выбрать компилятор. Вы должны вернуть GCC 4.0 в список. Теперь вы уже можете выбрать SDK 10.4 или 10.5, GCC 4.0, и у вас не должно возникнуть проблем при создании двоичного файла PPC. Просто выберите " Other ... " для настройки сборки " Architecture " и вручную введите " ppc ", затем измените " Valid Architectures"также включать" ppc". Мы почти закончили, за исключением того, что попытка создать двоичный файл PPC с использованием GCC 4.2 и SDK 10.5 все равно не удастся.

Шаг 5. Восстановление поддержки PPC для GCC 4.2

Поскольку Apple поддерживает только платформы Intel в Xcode4, не все инструменты GCC 4.2 были созданы с поддержкой PPC. Есть один важный инструмент, который не поддерживает PPC, инструмент называется « как » и это GNU Assembler. Для компиляции двоичных файлов ppc / ppc64 с GCC 4.2 нам нужно использовать версию " as " с поддержкой ppc / ppc64. Это единственный файл (на самом деле это также символическая ссылка), который мы должны сначала отодвинуть в сторону (сделать резервную копию), прежде чем мы сможем заменить его символической ссылкой:

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

Шаг 6: Нет шага 6

Это все, ребята. Учитывая, как легко это было, вы можете себе представить, что Apple, безусловно, не отказалась от поддержки SDK 10.4 / 10.5, ppc / ppc64 или GCC 4.0, потому что это было необходимо, они отказались от всего этого, потому что они хотели отбросить ее.

Я надеюсь, что эта настройка работает так же хорошо для вас, как и для меня. Мне удалось скомпилировать все мои старые проекты в Xcode4 без каких-либо серьезных изменений, за исключением необходимости изменять путь поиска здесь и там.

PS:
Может показаться странным, что я отвечаю на свой вопрос здесь, но, поскольку я узнал, как решить эту проблему самостоятельно, я хотел бы поделиться своими знаниями с сообществом, потому что я считаю, что это действительно ценный вклад во все MacOS разработчики там. Этот вопрос задавался так много раз во многих местах, и до сих пор я никогда не видел, чтобы кто-нибудь придумал подобное решение. Делитесь богатством, распространяйте знания и так далее, вы понимаете, о чем я.


Если у вас все еще есть проблемы / вопросы:

Если у вас есть дополнительные вопросы по этой теме или у вас все еще есть проблемы с правильной сборкой старых проектов, выполните то, для чего было разработано Stack Overflow.: Нажмите «Задать вопрос» в правом верхнем углу этой страницы и создайте новый вопрос.Таким образом, все сообщество может помочь вам решить эти проблемы, поскольку проблемы могут не иметь прямого отношения (возможно, даже косвенного) с этим хаком.

Я бы порекомендовал вам упомянуть тот факт, что вы применили этот хак в самом начале вашего вопроса.Возможно, вы даже хотите напрямую связать этот вопрос с тем, чтобы люди, которые никогда не слышали об этом хакере, могли легко его найти.В противном случае большинство людей запутаются, когда вы упомянете SDK 10.4 / 10.5, PPC или GCC 4.0 в сочетании с Xcode4, который официально не поддерживает ни один из них.Вы можете получить довольно глупые комментарии вместо достойных ответов, если забудете упомянуть об этом хаке.

Пожалуйста, воздержитесь от публикации здесь своих вопросов или проблем в качестве ответов или комментариев.Публиковать их как ответы не имеет смысла, потому что они не являются ответами, и нет никакого способа, как люди могут ответить вам, кроме использования комментариев, и комментарии могут не предоставить достаточно места для достойного ответа на ваш вопрос или достойного решения вашего вопроса.проблема.А публикация их в качестве комментариев означает, что вы ограничены очень небольшим пространством, и отслеживание комментариев будет затруднено, поскольку комментарии не имеют древовидной иерархии (в дальнейшем они все равно будут предлагать мало места для достойных ответов / решений).Спасибо.

Конечно, приветствуются и другие комментарии, а также лучшие ответы на исходный вопрос; -)

15 голосов
/ 05 апреля 2011

Еще один простой способ только с Xcode4, Xcode3 больше не нужен.

$ 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

редактирует:

Для 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

Вы можете использовать gcc-4.2 только для PowerPC. И опция «-isysroot /Developer/SDKs/MacOSX10.6.sdk» необходима, потому что 10.7 SDK больше не поддерживает PowerPC.

8 голосов
/ 12 августа 2011

Я собрал всю информацию с этой страницы, Mac OS X Hints, splhack.org и других источников, цитируемых здесь, и собрал набор скриптов BASH, которые автоматизируют процесс восстановления поддержки PPC и GCC 4.0 используя либо установку XCode 3, либо только собственные файлы платформы iPhone XCode 4.

Как всегда, используйте с осторожностью! и, пожалуйста, внесите любые исправления или улучшения. На момент публикации эти скрипты были протестированы только на моей собственной системе.

Вы можете скачать их с GitHub:

4 голосов
/ 21 марта 2011

Если вы хотите, чтобы gcc также работал из командной строки (как и выше), вам также необходимо:

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .
3 голосов
/ 07 июля 2012

Это все еще работает с Xcode 4.3.2 из AppStore - версии, где все автономно в комплекте приложений. Как и в оригинальной подсказке, сначала установите Xcode 3.2.6 *, а затем загрузите Xcode 4 из AppStore. Затем выполните следующую магию символической ссылки:

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

Последние две строки переименовывают darwin10 в darwin11 в символической ссылке - я предполагаю, что будущие версии OS X потребуют, чтобы это было обновлено соответствующим образом.

  • Чтобы установить Xcode 3.2.x на Lion, смонтируйте образ диска Xcode, откройте терминал, введите команды (используя bash или эквивалентные команды, если вы изменили оболочку по умолчанию):

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

Вам также нужно будет установить часы на дату, предшествующую 31 марта 2012 года, в противном случае сертификаты безопасности не пройдут проверку во время установки. Вы можете смело менять дату обратно после установки, очевидно!

2 голосов
/ 26 октября 2014

У Фредерика Девернея есть проект GitHub под названием xcodelegacy , который отлично работает для меня на Xcode 5.1.1, и для его запуска требуется совсем немного работы, только небольшая загрузка.В этом проекте мне удалось создать универсальные двоичные файлы, содержащие архитектуры ppc и i386, скомпилированные с помощью SDK 10.4 с использованием GCC 4.0, и все это из Xcode 5.1.1, работающего на Yosemite.Созданные бинарные файлы отлично работают на 10.5 Leopard и на самом Yosemite.

Домашняя страница здесь: http://devernay.free.fr/hacks/xcodelegacy

Проект Git Hub здесь: https://github.com/devernay/xcodelegacy

2 голосов
/ 12 июня 2012

В случае, если кому-то нужно восстановить старые SDK и компилятор PPC в Xcode 4.3 и 4.5, это скрипт, который я придумал.Обратите внимание, что вам нужно установить путь к комплекту приложения Xcode и путь к установке 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" . 

Вам не нужно использовать символическую ссылку 10.6 SDK, если вы используете Xcode4.3, поскольку он поставляется с одним.

Также скрипт не восстанавливает gcc 4.2, так как при этом возникает множество конфликтов имен.Моя цель - восстановить компилятор PPC, а для меня достаточно 4.0.

1 голос
/ 18 марта 2011

Было бы полезно иметь пакет, чтобы просто установить эти файлы в реализацию XCode 4.(или архив).

К вашему сведению: 3.2.6 Xcode3 не включает в себя архитектуру ppc.Но у меня была резервная копия Leopard на моем компьютере.Так что я скопировал этот, кажется, работает.(Используйте / usr / libexec / gcc / darwin / ppc / as).

Учитывая, что как gcc, так и as с открытым исходным кодом, единственное, что может не распространяться - это плагин xcode и право 10.4 SDK?1005 *

...