Tôi có một dự án mà tôi có một thư viện tĩnh libhelper.a
và một thư viện khác có thư viện đối tượng được chia sẻ thực tế của tôi, libtestlib.so
. Mục tiêu của tôi là liên kết libhelper.a
vào libtestlib.so
. Có thể đó trên Linux/BSD? Khi tôi cố gắng và tạo ra một chương trình thử nghiệm Tôi đã nhận các lỗi sau đây:Trộn các thư viện tĩnh và thư viện chia sẻ
./prog1:/usr/local/lib/libtestlib.so.1.0: undefined biểu tượng ''
tôi đoán là điều này xảy ra vì libhelper.a không được biên dịch với -fPIC
trong khi libtestlib.so
là. Cách thích hợp để xây dựng các chương trình sử dụng thư viện chia sẻ cũng có những phụ thuộc vào các thư viện tĩnh là gì?
Cảm ơn!
"liên kết libhelper.a vào libtestlib.so" Cái gì? –
Bạn đã thử làm gì cho đến nay? Trong mọi trường hợp, tôi không biết bất kỳ cách nào để liên kết mã không phải PIC vào một thư viện được chia sẻ. Các thư viện tĩnh thường chỉ được liên kết với các tệp thực thi, đó là lý do tại sao chúng hiếm khi được biên dịch với PIC. Bạn không thể liên kết cả hai thư viện vào thực thi, hoặc xây dựng cả hai với PIC ngay từ đầu? – Philipp