Chỉ sử dụng thực tế tùy chọn liên kết --whole-archive
mà tôi đã thấy trong việc tạo thư viện được chia sẻ từ các thư mục tĩnh. Gần đây tôi đã đi qua Makefile (s) mà luôn luôn sử dụng tùy chọn này khi liên kết với các thư viện trong nhà tĩnh. Điều này tất nhiên làm cho các tập tin thực thi để kéo không cần thiết trong mã đối tượng không được chấp nhận. Phản ứng của tôi với điều này là điều này là sai, tôi đang thiếu một cái gì đó ở đây?câu hỏi liên kết ld: tùy chọn --whole-archive
Câu hỏi thứ hai tôi phải thực hiện với nội dung tôi đã đọc về tùy chọn lưu trữ toàn bộ nhưng không thể phân tích cú pháp. Một cái gì đó để có hiệu lực là tùy chọn --whole-archive
nên được sử dụng trong khi liên kết với một thư viện tĩnh nếu thực thi cũng liên kết với một thư viện được chia sẻ mà lần lượt có (một phần) mã đối tượng giống như thư viện tĩnh. Đó là thư viện được chia sẻ và thư viện tĩnh có chồng chéo về mặt mã đối tượng. Sử dụng tùy chọn này sẽ buộc tất cả các ký hiệu (bất kể việc sử dụng) được giải quyết trong tệp thực thi. Điều này được cho là để tránh trùng lặp mã đối tượng. Điều này là khó hiểu, nếu một biểu tượng được đề cập trong chương trình, nó phải được giải quyết duy nhất tại thời điểm liên kết, doanh nghiệp này về sao chép là gì? (Hãy tha thứ cho tôi nếu đoạn này không hẳn là hình ảnh thu nhỏ của sự rõ ràng)
Cảm ơn
Russion Nếu libhttp.a có thể được xây dựng thì nó chứng minh rằng hàm register_handler tồn tại trong libhttp.a đó. Vì vậy, làm thế nào có thể chức năng này tham khảo register_handler trong main.cc? Vì vậy, trường hợp này chúng ta phải sử dụng một số cách khác để thực hiện ý tưởng của bạn. – longbkit