Объединить статические библиотеки в одну
Как объединить статические библиотеки в одну?
У меня есть три статические библиотеки libSignatureLibary_armv6.a, libSignatureLibary_armv7.a и libSignatureLibary_i368.a
Теперь я хочу объединить эти три файла в одну библиотеку с именем libSignatureLibary.a
В то время как Googling я нашел lipo, который является инструментом с открытым исходным кодом!
Нужно ли запускать какой-либо дополнительный язык сценариев для слияния
или в терминале липо и передать параметр для липо.
Может кто-нибудь по совету мне построить общую библиотеку для этих трех.
@ спасибо заранее Киран
2 ответа
Откройте терминал и перейдите в папку со своими библиотеками. Затем используйте команду:
lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a
Создание универсального файла или работа с ним: преобразование универсального двоичного файла в файл с одной архитектурой или наоборот.
lipo
из liposuction
. Как вы знаете, при создании проекта Xcode генерирует двоичный файл для разных архитектур ЦП.
- Когда разработчик хочет поделиться двоичным кодом производителя в качестве закрытого кода, он должен учитывать, что у клиента должна быть возможность запускать / отлаживать проект с этим двоичным кодом на реальном устройстве и симуляторе. Этот простой пример показывает, что разработчик должен иметь инструмент для объединения двоичных файлов для разных арок в один файл -
fat
двоичный. Другой пример: когда вы публикуете приложение в AppStore, вы можете удалить ненужную арку, используя
-remove
вариант.Если вы попытаетесь собрать проект с бинарным файлом без необходимой архитектуры, вы получите сообщение об ошибке [Не удалось найти модуль для архитектуры]
Архитектура:
- Симулятор - x86_64, i386
- Устройство - armv7, armv7s, arm64
Если вы попытаетесь запустить эту команду для двоичных файлов с той же аркой, вы получите
fatal error: <binary_list> have the same architectures (<arch>) and can't be in the same fat output file
Обратите внимание, что -create
опция не имеет параметров
lipo libMy_armv6.a libMy_armv7.a libMy_i368.a -create -output libMy.a
Чтобы проверить существующие архитектуры
lipo -info <binary_path>
//or
file <binary_path>
lipo -create libSignatureLibary_armv6.a libSignatureLibary_armv7.a libSignatureLibary_i368.a -output libSignatureLibary.a