Tôi muốn xây dựng cả thư viện tĩnh và chia sẻ trong một dự án.Tạo cả thư viện C++ tĩnh và chia sẻ
Tôi biết rằng các thư viện được chia sẻ cần phải được tạo từ các đối tượng được biên dịch bằng -fpic để lấy Mã độc lập vị trí trong khi thư viện tĩnh không cần điều này. Điều này là tất cả tốt và tôi có thể tạo ra một thư viện chia sẻ hoặc tĩnh.
Tôi không muốn biên dịch nguồn của mình hai lần để nhận các tệp đối tượng khác nhau, vì vậy, việc này thường được thực hiện như thế nào? Tôi đọc how to get a shared library based on a static one. Tuy nhiên, ví dụ cho thấy thư viện tĩnh được xây dựng với -fpic. Đây có phải là con đường để đi? Có những điều cần phải nhận thức được với điều này?
Có cách nào phương pháp chung để biên dịch cả thư viện tĩnh và được chia sẻ? Ví dụ. đầu tiên tĩnh và dựa trên lib một phiên bản chia sẻ được tạo ra?
Tôi muốn biết liệu có cách tiếp cận khác nhau cho điều này và những gì cần xem xét khi lựa chọn.
Tôi đang sử dụng gcc4.4 trên Linux.
Cảm ơn trước!
Đối với phương pháp này, làm cách nào để sắp xếp các tệp đối tượng nếu muốn có cả thư viện tĩnh và chia sẻ được tạo đồng thời? Cái gì đó như obj/static/... và obj/shared/...? – murrekatt
@murrekatt: Chắc chắn rồi. Thật tuyệt khi sử dụng một thư mục riêng biệt cho mỗi cấu hình xây dựng để bạn có thể sử dụng đồng thời nhiều thư mục mà không cần phải biên dịch lại hoàn toàn từng thư mục. Làm cho những subdir dưới một thư mục để giữ chúng cung cấp chính xác những gì bạn hiển thị, ít nhất là nếu bạn sử dụng "obj" làm thư mục build chính của bạn và "static" và "shared" tên của hai build đó. –