Si vous le faites simplement comme:
ar x a.a
ar x b.a
ar c c.a *.o
vous perdrez certains fichiers objets s'il y a des membres avec le même nom dans aa et ba, vous devez donc extraire les membres de différentes archives dans un dossier différent:
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
de plus, il est possible qu'il y ait plusieurs membres du même nom dans une archive (disons dans aa), si vous exécutez ar x aa , vous n'en obtiendrez qu'un pour les membres du même nom.
La seule façon d'extraire tous les membres du même nom dans une archive est de spécifier le numéro de membre par l'option '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
...
ce serait un travail fastidieux, vous devrez donc écrire un script plus sophistiqué pour faire ce travail.
Une solution facultative est que vous pouvez combiner plusieurs archives dans une bibliothèque partagée:
g++ -shared -o c.so -Wl,--whole-archive a.a b.a
de cette façon, l'éditeur de liens gérera tout pour vous!
libtool
libtool -static -o new.a old1.a old2.a