इसे मूल रूप से करने के कम से कम तीन तरीके हैं । पहला और सबसे पोर्टेबल तरीका है libtool का उपयोग करना। अन्य पुस्तकालयों को भी libtool के साथ बनाए जाने के बाद, आप उन्हें केवल एक स्वचालित libaz_la_LIBADD चर में .la libs जोड़कर या सीधे मेकफाइल से कुछ के साथ जोड़ सकते हैं:
libtool --mode=link cc -static -o libaz.la libabc.la libxyz.la
GNU का उपयोग करते समय अन्य दो कम से कम उपलब्ध हैं। आप एक MRI स्क्रिप्ट का उपयोग कर सकते हैं (उदाहरण के लिए libaz.mri नाम), जैसे:
create libaz.a
addlib libabc.a
addlib libxyz.a
save
end
और फिर इस तरह से निष्पादित करें:
ar -M <libaz.mri
या आप एक पतले आर्काइव (विकल्प -T
) का उपयोग कर सकते हैं , जो अन्य अभिलेखागार को बिना अंदर डाले उन्हें जोड़ने की अनुमति देगा, हालांकि नकारात्मक पक्ष यह है कि यदि आप स्थिर पुस्तकालय को वितरित करना चाहते हैं, तो अलग की गई वस्तु गायब होगी:
ar -rcT libaz.a libabc.a libxyz.a
उपरोक्त सभी विधियां मूल रूप से मूल अभिलेखागार से अतिव्यापी सदस्य नामों को संभालती हैं।
अन्यथा, आपको अलग-अलग निर्देशिकाओं में अनपैक करना होगा और ओवरलैपिंग सदस्य नामों की जगह से बचने के लिए फिर से वापस आना होगा:
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