Объединение статических библиотек

Я пробовал подход в этом вопросе , но похоже, что версия linux ar не совпадает с версией mac, так как я не смог снова объединить объектные файлы.

То, что я в основном хочу сделать, это объединить еще одну статическую библиотеку в мой продукт сборки статической библиотеки Xcode через фазу сборки сценария запуска.

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

Я думаю, что должно быть возможно объединить другую библиотеку через ar в библиотеку сгенерированной Xcode без декомпиляции продукта сборки. Как это сделать?

вы можете использовать libtool для этого

 libtool -static -o new.a old1.a old2.a 

Если вы имеете дело с многоадресными статическими библиотеками, требуется немного дополнительных манипуляций для тонкой каждой библиотеки, объединения разбавленных версий и последующей откармливания результата. Вот удобный скрипт, который вы можете отредактировать до вашего удовлетворения, что делает все это в одном. В примере используются три библиотеки iOS path/to/source/libs/libone.a , path/to/source/libs/libtwo.a и path/to/source/libs/libthree.a и объединяет их в одну библиотеку libcombined.a .

 #! /bin/bash INPATH="path/to/source/libs" LIBPREFIX="lib" LIBS="one two three" LIBEXT=".a" OUT="combined" ARCHS="armv7 armv7s arm64" for arch in $ARCHS do for lib in $LIBS do lipo -extract $arch $INPATH/$LIBPREFIX$lib$LIBEXT -o $LIBPREFIX$lib-$arch$LIBEXT done INLIBS=`eval echo $LIBPREFIX\{${LIBS// /,}\}-$arch$LIBEXT` libtool -static -o $LIBPREFIX$OUT-$arch$LIBEXT $INLIBS rm $INLIBS done OUTLIBS=`eval echo $LIBPREFIX$OUT-\{${ARCHS// /,}\}$LIBEXT` lipo -create $OUTLIBS -o $LIBPREFIX$OUT$LIBEXT rm $OUTLIBS 

Вы должны просто иметь возможность связать друг с другом. Итак … просто используйте ld для объединения изображений.

Вы должны использовать ar -r для создания архива в MacOS:

 ar -x libabc.a ar -x libxyz.a ar -r libaz.a *.o 
Давайте будем гением компьютера.