Hay al menos tres formas de hacer esto de forma nativa . La primera y más portátil forma es usar libtool. Después de haber construido las otras bibliotecas también con libtool, puede combinarlas simplemente agregando las .la libs a una variable libaz_la_LIBADD de automake, o directamente desde un Makefile con algo como:
libtool --mode=link cc -static -o libaz.la libabc.la libxyz.la
Los otros dos están disponibles al menos cuando se usa GNU ar. Puede utilizar un script de MRI (llamado, por ejemplo, libaz.mri), como:
create libaz.a
addlib libabc.a
addlib libxyz.a
save
end
y luego ejecute ar como:
ar -M <libaz.mri
O puede usar un archivo delgado (opción -T
), que permitirá agregar otros archivos sin anidarlos dentro, aunque la desventaja es que si desea distribuir la biblioteca estática, faltará el objeto separado:
ar -rcT libaz.a libabc.a libxyz.a
Todos los métodos anteriores manejan con gracia los nombres de miembros superpuestos de los archivos originales.
De lo contrario, tendría que descomprimir en directorios diferentes y volver a empaquetar, para evitar reemplazar nombres de miembros superpuestos:
mkdir abc; cd abc; ar -x ../libabc.a
mkdir xyz; cd xyz; ar -x ../libxyz.a
ar -qc libaz.a abc xyz
libtool
libtool -static -o new.a old1.a old2.a