Объединить статические библиотеки в одну

Как объединить статические библиотеки в одну?

У меня есть три статические библиотеки 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 команда

Создание универсального файла или работа с ним: преобразование универсального двоичного файла в файл с одной архитектурой или наоборот.

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
Другие вопросы по тегам