una sirve que programacion para librerías librerias libreria lenguaje estatica dinámicas dinamicas dinamica desarrolladas crear creacion crea con compilar como objective-c c xcode static-libraries

objective-c - librerías - que es una libreria en programacion y para que sirve



Combina bibliotecas estáticas (4)

Debe usar ar -r para crear un archivo en MacOS:

ar -x libabc.a ar -x libxyz.a ar -r libaz.a *.o

Probé el enfoque en esta question , pero parece que la versión de Linux de ar no es la misma que la versión de mac ya que no pude combinar los archivos objeto nuevamente.

Lo que básicamente quiero hacer es fusionar otra biblioteca estática en mi producto de compilación de biblioteca estática de Xcode a través de una fase de compilación run-script.

Lamentablemente, no puedo compilar la otra biblioteca directamente en mi proyecto porque tiene su propio sistema de compilación (por lo tanto, utilizo las librerías compiladas).

Creo que debería ser posible fusionar la otra biblioteca mediante ar en la biblioteca generada de Xcode sin descompilar el producto de compilación. ¿Cómo logro esto?


Debería poder vincular uno con el otro. Entonces ... solo usa ld para fusionar las imágenes.


Si se trata de bibliotecas estáticas de múltiples arquitecturas, se requiere un poco de manipulación adicional para diluir cada biblioteca, combinar las versiones reducidas y luego engordar el resultado. Aquí hay un guión útil que puede editar a su gusto, que hace todo eso en uno. El ejemplo toma tres librerías iOS path/to/source/libs/libone.a , path/to/source/libs/libtwo.a , y path/to/source/libs/libthree.a y las fusiona en una sola biblioteca 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


puedes usar libtool para hacerlo

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