2012-03-16 31 views

Trả lời

7

Thư viện tĩnh về cơ bản chỉ là một tập hợp các tệp đối tượng. Nó thường chỉ là một kho lưu trữ ar của các tệp đối tượng. Sử dụng ar, bạn có thể trích xuất tệp đối tượng từ thư viện, thêm các tệp đối tượng khác vào nó, v.v.

Nói chung, sự khác biệt giữa thư viện động và tệp đối tượng dùng chung là đích - Windows sử dụng thư viện động, Linux sử dụng các đối tượng được chia sẻ. Có một chút khác biệt nhiều hơn thế, nhưng không phải là rất nhiều.

1

Thư viện động (được chia sẻ) sử dụng mã PIC - mã sẽ hoạt động bất kể vị trí thực tế của thư viện được sử dụng bởi nhiều tệp thi hành trong bộ nhớ.

Thư viện tĩnh được liên kết với tệp thực thi trong giai đoạn liên kết để tạo tệp thi hành.

Lợi thế của thư viện động là dấu chân nhỏ hơn của tệp thực thi trong bộ nhớ. Lợi thế của các thư viện tĩnh là bạn chỉ có thể cung cấp tệp thực thi mà không cần phải có thư viện động và chạy nhanh hơn một chút và không cần nỗ lực để cho phép thư viện tồn tại ở bất kỳ đâu trong bộ nhớ vật lý.

+0

Nhưng câu hỏi của tôi là về "thư viện so với tệp đối tượng" chứ không phải về "static lib động". Ngoài ra tiếng Anh của tôi cũng không tốt lắm :). Vì vậy, nếu tất cả vì viết câu hỏi rối - hãy cho tôi biết, xin vui lòng. – Jofsey

+0

Thư viện chỉ là một tập hợp các tệp. Chỉ cần đảm bảo rằng bộ sưu tập là để được chia sẻ hoặc tĩnh. Câu trả lời của tôi là cho bạn biết sự khác biệt giữa việc có các tệp được chia sẻ hoặc tĩnh. –

+1

Câu trả lời của bạn không chính xác về mọi chi tiết ;-(Trên ix86 Linux, bạn có thể tạo các thư viện chia sẻ từ mã không phải là '.PIC', các thư viện tĩnh có thể chứa mã' -PIC' và có thể được liên kết trong các thư viện chia sẻ. Dấu chân của một tập tin thực thi bằng cách sử dụng liên kết động là * lớn hơn * không phải là –

0

Thư viện lưu trữ tiết kiệm dung lượng đĩa nếu chúng được nhiều hơn một tệp thực thi. Nếu nhiều tệp thực thi sử dụng cùng một hàm từ một thư mục được chia sẻ. đang chạy mỗi sẽ nhận được bản sao của riêng mình. Không thể thực thi trên đĩa sẽ bao gồm mã của hàm đó mà là một tham chiếu đến lib được chia sẻ.

Các vấn đề liên quan