Какао 32-битные и 64-битные двоичные файлы в приложении - PullRequest
1 голос
/ 19 апреля 2011

Мое последнее Mac-приложение было отклонено из Mac App Store.

В основном это не сработало из-за самодостаточного исполняемого файла unix, содержащегося в приложении. Ранее я включал двоичный файл в свое приложение, это приложение находится в Mac App Store, но этот бинарный файл Unix доставляет мне неприятности.

Я скомпилировал 2 разные версии этого двоичного файла на машине i386, а другую - на машине x86_64. Используя "имя файла приложения", я получаю для 64-разрядного двоичного файла

Mach-O 64-битный исполняемый файл x86_64

и 32-разрядный двоичный код

Mach-O исполняемый файл i386

Во время выполнения я пытаюсь выполнить правильный двоичный файл, но заметил, что это не имеет значения? Какой бинарный файл я использую, я могу запустить x86_64 на машине i386, и все работает нормально.

Настройки сборки моего приложения соответствуют стандартному проекту (стандарт 32/64 бит Intel).

Вопрос в том, должен ли я пытаться запустить 32-битный двоичный файл, когда приложение работает на компьютере с i386?
И почему мой двоичный файл x86_64 работает, когда я запускаю его на компьютере i386?

Спасибо, Джон.

Ответы [ 2 ]

4 голосов
/ 19 апреля 2011

Почему вы не строите свой инструмент Unix как универсальный бинарный файл? Затем операционная система выберет правильную версию двоичного файла для запуска на основе архитектуры компьютера.

РЕДАКТИРОВАТЬ - чтобы добавить мой комментарий как часть правильного ответа.

Вам необходимо собрать двоичные файлы для i386 и x86_64. Очевидно, вам нужно собрать исполняемый файл и все зависимости для обеих архитектур. Может быть достаточно использовать флаг gcc -arch = i386 везде для архитектуры i386. Затем вы можете использовать lipo для объединения двух двоичных файлов.

2 голосов
/ 19 апреля 2011

Вы делаете вещи слишком сложными. Вам не нужна 64-битная машина для сборки 64-битного двоичного файла, и при этом не проблема создать 32-битный двоичный файл на 64-битной машине.

GCC и, следовательно, XCode easilly поддерживает создание 32-битных универсальных или 32/64-битных универсальных образов, поэтому вам не нужно беспокоиться о запуске правильного.

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