Как мне собрать универсальные двоичные файлы (ppc / i386), используя Xcode 3.2.2 для OSX? - PullRequest
3 голосов
/ 24 июня 2010

Я пытаюсь создать универсальный двоичный файл для проекта на работе, но я не могу правильно настроить Xcode для этого.

Я знаком с документацией Apple по этому поводу, но, видимо, я не правильно ее читаю.

Рассматриваемые параметры сборки Xcode:

  • Архитектура
  • Базовый SDK
  • Версия компилятора C / C ++
  • Цель развертывания Mac OS X

В моих настройках у меня есть следующие допустимые архитектуры: i386 ppc ppc64 ppc7400 ppc970 x86_64.

Если я использую следующие опции, я получаю двоичный файл с i386 и ppc970 :

  • Архитектура: i386 PPC
  • Базовый SDK: Mac OS X 10,5
  • Версия компилятора C / C ++: GCC 4.0
  • Цель развертывания Mac OS X: Mac OS X 10,5

У меня есть несколько вопросов по этому поводу:

  1. Почему ppc970, а не ppc7400 (или просто ppc)?
  2. В чем разница между ppcs (ppc, ppc64, ppc7400, ppc970)?
  3. Как получить бинарный файл для любого КПК?

Видимо, мне нужен бинарный файл с ppc7400 для работы на Mac Mini, который у нас есть для тестирования. Mini имеет G4 и работает под управлением OSX 10.5.8. Из того, что я могу сказать, двоичный файл с ppc7400 работает, но не один с только ppc970.

Я пробовал несколько комбинаций вышеупомянутых опций сборки, включая изменение моего базового SDK на 10.4u. Вышеуказанная конфигурация является единственной, которую можно собрать. Другие сборки терпят неудачу, часто из-за не распознавания заголовочных файлов или явно доступных #defines Например, если я изменю свой компилятор на gcc 4.2, я получаю ошибки при поиске stdarg.h из-за директивы #include_next и отсутствия четкого пути к правильным заголовкам. Если я уроню базовый SDK до 4.0, #define FSIZE long long больше не будет распознаваться, несмотря на то, что он не изменяет какие-либо включения.

Я бы очень признателен за любую информацию, которую вы мне можете дать.


РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ

Спасибо за информацию. Теперь я понимаю флаги. Но я получаю странный результат.

Вот мои флаги сборки:

GCC_VERSION = 4.0 MACOSX_DEPLOYMENT_TARGET = 10,4 SDKROOT = macosx10.5 GCC_MODEL_TUNING = G3

Это создает объектный файл (.o), который имеет arch 'ppc', как показано на lipo. Все включенные библиотеки и фреймворки являются либо «ppc», либо «ppc7400» (опять же, как показано на lipo). Но окончательная сборка - ppc970.

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

Я даже зашел так далеко, что создал новый проект (Hello World) и связал его со всеми библиотеками и фреймворками первого проекта. Hello строится как 'ppc', а не 'ppc970'.

Это просто не имеет смысла для меня.

Ответы [ 2 ]

4 голосов
/ 24 июня 2010

ppc970 == G5.Если вам требуется поддержка еще до G4, тогда просто создайте для ppc7400.

Вместо того, чтобы возиться с отдельными настройками архитектуры, вы можете просто выбрать 32-bit Universal (или Standard (32/64-bit Universal),при необходимости) из всплывающего меню, и это должно дать вам то, что вам нужно.

1 голос
/ 10 декабря 2010

В настройках цели внесите следующие изменения.

GCC_MODEL_PPC64 = NO

т.е. снимите флажок «Использовать 64-разрядное целочисленное математическое вычисление».

Включение включит 64-разрядное.Так что это будет G5 и далее ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...