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

Как мы можем восстановить 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?

4b9b3361

Ответ 1

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

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

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

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

  • Старайтесь не перемещать и не копировать файлы, если это абсолютно необходимо.

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

Если вы не являетесь экспертом в терминальных операциях, я настоятельно рекомендую вам скопировать/вставить все команды терминала из моего ответа на ваш терминал, чтобы избежать опечаток. Имейте в виду, что даже интервал, цитирование и особенно капитализация могут быть важными. Скопируйте/вставьте их по строкам, не более одной строки за один раз и нажмите 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 с SDK iOS, независимо от того, устанавливаете ли вы эти или нет, также зависит от вас.

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

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

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

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

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

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

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

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

Если вы не установили 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 /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. Просто выберите "Другое..." для параметра "Архитектура" и вручную введите "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 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, который официально не поддерживает ни один из них. Вы можете получить довольно глупые комментарии вместо достойных ответов, если вы забыли упомянуть этот хак.

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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

Это все еще работает с 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 года, иначе сертификаты безопасности не будут проверяться во время установки. Вы можете безопасно изменить дату назад после установки, очевидно!

Ответ 6

В случае, если кому-то нужно восстановить старые SDK и компилятор PPC в Xcode 4.3 и 4.5, это script я придумал. Обратите внимание, что вам нужно установить путь к набору приложений Xcode и пути к установке Xcode 3.2.6 в начале script.

#!/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, поскольку он поставляется с одним.

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

Ответ 7

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 project here: https://github.com/devernay/xcodelegacy

Ответ 8

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

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

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