Разница между статической и динамической библиотекой в ​​Xcode для iPhone - PullRequest
18 голосов
/ 16 сентября 2010

В чем разница между статической и динамической библиотекой в ​​XCode?И почему Apple не позволяет нам использовать динамические библиотеки в наших приложениях для iOS?

Ответы [ 4 ]

12 голосов
/ 16 сентября 2010

Хотя вы можете создавать динамические библиотеки для Mac OS X, вы не можете использовать их для разработки на iPhone.

Статическая библиотека - это просто архив объектных файлов, которые помещаются в программу, ссылающуюся на нее.Компоновщик разархивирует все архивные файлы и извлечет их во время компоновки вместе с остальными объектными файлами.

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

4 голосов
/ 16 сентября 2010

Динамическая библиотека не имеет никакого смысла для приложения для iphone, поскольку нет возможности установить библиотеку на телефон.Я помню, как читал некоторую документацию, где Apple заявляла, что они решили не использовать динамические библиотеки, поскольку они не хотели, чтобы пользователи сталкивались с проблемами поиска / обновления библиотек.Гораздо проще просто установить 1 пакет на приложение.

1 голос
/ 16 сентября 2010

Apple позволяет создавать динамические библиотеки.В Mac OS X они заканчиваются на .bundle или .dylib (не .so или .a как в Linux).

Что конкретно вы пытаетесь сделать?Вы создали цель для своего dylib?

0 голосов
/ 07 апреля 2019

Static libraries (*.a) являются коллекциями объектных файлов. В свою очередь, объектный файл - это просто имя файла, который выходит из компилятора и содержит машинный код.

Dynamic libraries (*.dylib), в отличие от static, вместо того, чтобы копироваться в один монолитный исполняемый файл, загружаются в память, когда они действительно необходимы. Это может произойти либо во время загрузки, либо во время выполнения.

Dynamic libraries обычно совместно используются приложениями, поэтому система должна хранить только одну копию библиотеки и разрешать доступ к ней различным процессам. В результате вызов кода и данных из динамических библиотек происходит медленнее, чем из статических.

Все системные библиотеки iOS и macOS dynamic. Следовательно, наши приложения выиграют от будущих улучшений, которые Apple внесет в стандартные библиотечные фреймворки без создания и доставки новых сборок. Apple оставляет за собой возможность создавать system frameworks для себя; в настоящее время сторонние разработчики не могут создавать system frameworks на iOS.

Если ваш Deployment target - iOS8 +, вы можете создать embedded framework, то есть embedded framework и dynamic framework. Embedded frameworks находятся в изолированной программной среде приложения и доступны только для этого приложения. Этот тип был создан в первую очередь для расширений для совместного использования общего кода и ресурсов.

Источник и еще один . Читайте также здесь

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