Basitçe şu şekilde yaparsanız:
ar x a.a
ar x b.a
ar c c.a *.o
hem aa hem de ba'da aynı ada sahip üyeler varsa bazı nesne dosyalarını kaybedersiniz, bu nedenle farklı arşivlerin üyelerini farklı klasöre çıkarmanız gerekir:
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
dahası, bir arşivde aynı isimde birden fazla üye olması olasıdır (örneğin aa'da), eğer ar x aa çalıştırırsanız , aynı isimdeki üyeler için sadece bir tane alırsınız.
Aynı isimdeki tüm üyeleri tek bir arşivden çıkarmanın tek yolu, üye numarasını 'N' seçeneği ile belirlemektir:
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
...
bu sıkıcı bir iş olurdu, bu yüzden bu işi yapmak için daha karmaşık bir senaryo yazmanız gerekecek.
Bir opsiyonel çözümler tek bir paylaşılan kitaplığa birden fazla arşiv birleştirebilirsiniz olmasıdır:
g++ -shared -o c.so -Wl,--whole-archive a.a b.a
bu şekilde bağlayıcı sizin için her şeyi halleder!
libtool
libtool -static -o new.a old1.a old2.a