Ответ 1
Mach-O, сокращенно для формата файла объектов Mach, является файловым форматом для исполняемых файлов, объектного кода, разделяемых библиотек, динамически загруженного кода, и дампы ядра. Для пользователей unix это похоже на a.out
, но с улучшениями. Это формат, используемый в библиотеках ОС Mac OS X и iPhone для исполняемых файлов.
Как вы знаете, устройства iOS (iPhone, iPad и т.д.) имеют разные архитектуры ARMv6 (iPhone 2G + 3G, iPod Touch) и ARMv7 (iPhone 3GS, iPod Touch 2G + 3G), но симуляторы, используемые в Xcode, работают в основном на i386 Платформа. Это означает, что клиенты библиотеки должны настраивать отдельные цели для симулятора и устройства. Отдельные целевые объекты дублируют большую часть информации и отличаются только включенными статическими библиотеками. Поэтому, если вы получаете ошибку компоновщика Mach-O, это значит, что у xcode возникают проблемы с привязкой к одной из библиотек для этого целевого устройства; в результате чего сбой компиляции.
Теперь ваши определения -
- Исполняемая - скомпилированная целевая программа, готовая к запуску в двоичном формате.
- Динамическая библиотека - связаны во время выполнения - программа со ссылками на динамическую библиотеку загружается и связывается с библиотекой при ее запуске (или по требованию).
- Связки - и идентификатор пакета позволяют iOS и OSX распознавать любые обновления вашего приложения. Это дает ему уникальное присутствие в приложении.
- Статическая библиотека - файлы связаны во время сборки. код копируется в исполняемый файл. Код в библиотеке, на который не ссылается ваша программа, удаляется. Программа с только статическими библиотеками не имеет никаких зависимостей во время выполнения.
- Relocatable Object File - это еще одно слово для динамической библиотеки. Когда вы связываетесь с динамической библиотекой, адреса функций, содержащихся внутри, вычисляются на основе того, где библиотека загружается в память. Они "перемещаются", потому что адреса содержащихся функций не определяются во время связи. (В статической библиотеке адреса вычисляются во время времени ссылки.)