Một chút tính năng sử dụng của Archiver GNU là kịch bản lưu trữ, nó là một giao diện đơn giản nhưng mạnh mẽ, và nó có thể thực hiện chính xác những gì bạn muốn, ví dụ nếu kịch bản sau đây được gọi là script.ar:
CREATE libNewColor.a
ADDLIB libColor.a
ADDLIB libRGB.a
ADDLIB libPixel.a
SAVE
END
sau đó, bạn có thể gọi ar như sau:
ar -M < script.ar
và bạn sẽ nhận được libNewColor.a có chứa tất cả các file .o từ libColor.a libRGB.a và libPixel.a.
Ngoài ra, bạn cũng có thể thêm thông thường.o file cũng với lệnh ADDMOD:
CREATE libNewColor.a
ADDLIB libColor.a
ADDLIB libRGB.a
ADDLIB libPixel.a
ADDMOD someRandomCompiledFile.o
SAVE
END
Hơn nữa nó là siêu dễ dàng để tạo các kịch bản trong Makefiles, vì vậy tôi thường tạo ra một quy tắc makefile hơi chung chung để tạo tài liệu lưu trữ mà thực sự tạo kịch bản và gọi ar trên kịch bản. Một cái gì đó như thế này:
$(OUTARC): $(OBJECTS)
$(SILENT)echo "CREATE [email protected]" > $(ODIR)/$(ARSCRIPT)
$(SILENT)for a in $(ARCHIVES); do (echo "ADDLIB $$a" >> $(ODIR)/$(ARSCRIPT)); done
$(SILENT)echo "ADDMOD $(OBJECTS)" >> $(ODIR)/$(ARSCRIPT)
$(SILENT)echo "SAVE" >> $(ODIR)/$(ARSCRIPT)
$(SILENT)echo "END" >> $(ODIR)/$(ARSCRIPT)
$(SILENT)$(AR) -M < $(ODIR)/$(ARSCRIPT)
Mặc dù bây giờ mà tôi nhìn vào nó, tôi đoán nó không hoạt động nếu $ (ĐỐI TƯỢNG) là rỗng (tức là nếu bạn chỉ muốn kết hợp tài liệu lưu trữ mà không cần bổ sung thêm các file đối tượng) nhưng tôi sẽ để nó như một tập thể dục cho người đọc để khắc phục vấn đề rằng nếu cần thiết ...: D
Sau đây là các tài liệu cho tính năng này:
https://sourceware.org/binutils/docs/binutils/ar-scripts.html#ar-scripts
Nguồn
2013-09-03 17:36:03
Hoặc bạn có thể nhìn vào http: // stackoverflow. com/questions/8170450/kết hợp-static-thư viện/8170851 # 8170851 và sử dụng libt ool – Bruce
Lưu ý rằng bước giảm thiểu thực sự là không cần thiết. Với các thư viện tĩnh, trình liên kết sẽ chỉ lấy các tệp đối tượng mà nó cần, không giống như các thư viện được chia sẻ bao gồm mọi thứ. Có nhiều lý do và lợi thế cho mỗi cách tiếp cận; chúng chỉ khác nhau. Và bạn thực sự không cần phải lo lắng khi đang làm việc với các thư viện tĩnh. –