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

StackOverflow https://stackoverflow.com/questions/1148964

Вопрос

Я хотел бы знать, как вы можете поддерживать архитектуры 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 -архитектуры?

Это было полезно?

Решение

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

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

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

Другие советы

Это называется жирный бинарный.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top