Как программы поддерживают i386 и ppc одновременно? - PullRequest
5 голосов
/ 19 июля 2009

Я хотел бы знать, как вы можете поддерживать архитектуры i386 и ppc для программ в /bin.

Я бегу, например,

bin  $ file amber

Я получаю

amber: setgid Mach-O universal binary with 2 architectures
amber (for architecture i386):  Mach-O executable i386
amber (for architecture ppc):   Mach-O executable ppc

Как программы поддерживают i386 и ppc в исходном коде?

Другими словами, какие компоненты вы можете удалить, например, в / bin / amber, если удалите поддержку ppc -архитектуры?

Ответы [ 2 ]

10 голосов
/ 19 июля 2009

Это называется Универсальный двоичный файл . Короче говоря, исполняемый файл содержит оба типа исполняемого кода. У Apple есть опубликованный документ , описывающий, как разработчики должны создавать свои приложения для работы на любой платформе.

Исполняемый файл lipo можно использовать для удаления любой версии исполняемого файла из файла. Если вы хотите, чтобы ваши исполняемые файлы содержали только одну версию, вы можете использовать lipo для достижения этой цели.

Имейте в виду, что существует не только ppc и i386, хотя это самые «безопасные» архитектуры для выбора универсального двоичного файла. Прочитайте справочную страницу для arch; там вы можете увидеть, что современный двоичный файл OSX может содержать любой из ppc, ppc64, i386 или x86_64. Есть еще много перечисленных, но они существуют там для полноты.

5 голосов
/ 19 июля 2009

Это называется толстый двоичный файл .

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

...