Как мы можем восстановить ppc / ppc64, а также полную поддержку SDK 10.4 / 10.5 для Xcode 4?

Поскольку 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 и продолжать работать с устаревшей IDE Xcode3. Было бы намного лучше, если бы вы могли управлять всеми вашими старыми проектами в рамках той же IDE, что и ваши новые, и получать выгоду от любых новых доступных функций. Не все проекты могут быть сделаны 10.6 или Intel только в обозримом будущем. Далее я категорически против отмены поддержки старых платформ раньше, чем это было бы действительно необходимо.

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

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

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

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

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

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

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

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

необходимое условие

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

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

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

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

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

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

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

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

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

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

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

  cd / Developer / SDK
 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

Если вы не установили SDK MacOS 10.4 или если вы не планируете когда-либо использовать его, вы можете спокойно пропустить этот шаг и перейти к шагу 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 / Разработчик / usr / bin
 sudo ln -s /Xcode3/usr/bin/*4.0*.

 cd / Разработчик / 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 / Содержание / 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. Просто выберите « Другое … » для параметра « Архитектура » и вручную введите « ppc », затем измените « Действительные архитектуры », чтобы также включить « ppc ». Мы почти закончили, за исключением того, что попытка создания бинарной базы PPC с использованием GCC 4.2 и SDK 10.5 будет по-прежнему терпеть неудачу.

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

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

  cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
 sudo mv как 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, который официально не поддерживает ни один из них. Вы можете получить довольно глупые комментарии вместо достойных ответов, если не забываете упомянуть этот взлом.

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

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

Еще один простой способ только с 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.

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

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

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

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

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

Это по-прежнему работает с 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, откройте Terminal, введите команды (используя bash или эквивалентные команды, если вы изменили оболочку по умолчанию):

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

Вам также нужно будет установить часы на дату до 31 марта 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" . 

Вам не нужно использовать symlink 10.6 SDK, если вы используете Xcode 4.3, поскольку он поставляется с одним.

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

У Frédéric Devernay есть проект GitHub под названием xcodelegacy, который отлично работает для меня на Xcode 5.1.1, и для его работы требуется очень мало работы, просто загрузка.

Используя его проект, мне удалось создать универсальные двоичные файлы, содержащие как архитектуры ppc, так и i386, скомпилированные с 10.4 SDK с использованием 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

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

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

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

Interesting Posts

.Net HttpWebRequest.GetResponse () вызывает исключение, когда возвращается код состояния http 400 (неудачный запрос)

Как включить обработчики маршрута в несколько файлов в Express?

Dompdf и установить разные шрифты

Я не могу получить второй маршрутизатор для расширения сети по сетевым адаптерам

Mailchimp подписывается с помощью jQuery AJAX?

Присоедините третий компьютер к общему интернет-соединению

iPhone: NSHTTPCookie не сохраняется через перезагрузки приложений

Как синхронизировать Thunderbird на двух компьютерах?

Я хочу расширить раздел на моем SSD-загрузке, но на этом пути есть раздел восстановления и системный раздел EFI. Как я могу обойти это?

Является ли целостность флеш-памяти зависящей от системных ресурсов при чтении / записи (например, CD / DVD)?

MySQL хранимой процедуры против функции, которую я буду использовать, когда?

«Postfix ops» от Scala

Как добавить параметры в WebRequest?

Простое объяснение classификации Наив Байеса

Как я могу получить ffmpeg для преобразования .mov в .gif?

Давайте будем гением компьютера.