Có ít nhất ba cách để làm điều này nguyên bản . Cách đầu tiên và dễ di chuyển nhất là sử dụng libtool. Sau khi đã xây dựng các thư viện khác cũng bằng libtool, bạn có thể kết hợp chúng chỉ bằng cách thêm các lib .la vào biến automake libaz_la_LIBADD hoặc trực tiếp từ Makefile với một cái gì đó như:
libtool --mode=link cc -static -o libaz.la libabc.la libxyz.la
Hai phần còn lại ít nhất có sẵn khi sử dụng GNU ar. Bạn có thể sử dụng tập lệnh MRI (được đặt tên là libaz.mri chẳng hạn), chẳng hạn như:
create libaz.a
addlib libabc.a
addlib libxyz.a
save
end
và sau đó thực thi ar dưới dạng:
ar -M <libaz.mri
Hoặc bạn có thể sử dụng một kho lưu trữ mỏng (tùy chọn -T
), cho phép thêm các kho lưu trữ khác mà không làm chúng lồng vào bên trong, mặc dù nhược điểm là nếu bạn muốn phân phối thư viện tĩnh, đối tượng tách rời sẽ bị thiếu:
ar -rcT libaz.a libabc.a libxyz.a
Tất cả các phương pháp trên đều xử lý các tên thành viên chồng chéo từ các kho lưu trữ ban đầu.
Nếu không, bạn phải giải nén vào các thư mục khác nhau và đóng gói lại, để tránh thay thế các tên thành viên trùng lặp:
mkdir abc; cd abc; ar -x ../libabc.a
mkdir xyz; cd xyz; ar -x ../libxyz.a
ar -qc libaz.a abc xyz
libtool
giải pháp dựa trên :libtool -static -o new.a old1.a old2.a