Si simplemente como:
ar x a.a
ar x b.a
ar c c.a *.o
va perdido algunos archivos de objetos si t aquí son miembros con el mismo nombre en AA y BA así, es necesario extraer los miembros de diferentes archivos en diferentes carpetas:
ar x a.a && mv *.o a_objs
ar x b.a && mv *.o b_objs
ar c c.a a_objs/*.o b_objs/*.o
aún más, es Posible que hay varios miembros del mismo nombre en un archivo (diga en aa), si ejecuta ar x aa, obtendrá solo una para los miembros del mismo nombre.
La única manera de extraer todos los miembros del mismo nombre en un archivo es para especificar el número de socio por la opción 'N':
ar xN 1 a.a xxx.c.o && mv xxx.c.o xxx.c.1.o
ar xN 2 b.a xxx.c.o && mv xxx.c.o xxx.c.2.o
...
esto sería un trabajo tedioso, por lo que tendrá que escribir una script más sofisticado para hacer ese trabajo.
Una opcionales soluciones es que se puede combinar varios archivos en una sola biblioteca compartida:
g++ -shared -o c.so -Wl,--whole-archive a.a b.a
esta manera, el enlazador se encargará de todas las cosas para usted!
Consulte también: [ 'solución basada en libtool'] (http: // stackoverflow. com/a/8170851/196561): 'libtool -static -o new.a old1.a old2.a' – osgx
funciona perfecto, solo un poco de duda si esas bibliotecas tienen un archivo común.o (pero la funcionalidad es diferente) ¿Seguirá funcionando? – bindingofisaac