Nó là để giải quyết sự phụ thuộc vòng tròn giữa một số thư viện (được liệt kê giữa -(
và -)
).
Trích dẫn Tại sao thứ tự các thư viện được liên kết đôi khi gây ra lỗi trong GCC? hoặc man ld
http://linux.die.net/man/1/ld
-(
kho lưu trữ -)
hoặc --start-group
kho lưu trữ --end-group
Các kho lưu trữ phải là một danh sách các tệp lưu trữ. Chúng có thể là tên tệp rõ ràng hoặc tùy chọn -l.
Các kho lưu trữ được chỉ định được tìm kiếm nhiều lần cho đến khi không có tham chiếu không xác định mới nào được tạo. Thông thường, một kho lưu trữ chỉ được tìm kiếm một lần theo thứ tự mà nó được chỉ định trên dòng lệnh. Nếu một ký hiệu trong kho lưu trữ đó là cần thiết để giải quyết một ký hiệu không xác định được tham chiếu bởi một đối tượng trong kho lưu trữ xuất hiện sau đó trên dòng lệnh, trình liên kết sẽ không thể phân giải tham chiếu đó. Bằng cách nhóm các kho lưu trữ, tất cả chúng đều được tìm kiếm nhiều lần cho đến khi tất cả các tài liệu tham khảo có thể được giải quyết.
Sử dụng tùy chọn này có một chi phí hiệu suất đáng kể. Tốt nhất là chỉ sử dụng nó khi không thể tránh khỏi các tham chiếu vòng giữa hai hoặc nhiều kho lưu trữ.
Vì vậy, các thư viện bên trong nhóm có thể được tìm kiếm các ký hiệu mới một vài lần và bạn không cần cấu trúc xấu xí như -llib1 -llib2 -llib1
PS archive về cơ bản có nghĩa là một thư viện tĩnh ( *.a
tệp)