Tôi có một thư viện được chia sẻ mà tôi muốn liên kết một tệp thực thi với việc sử dụng GCC. Thư viện được chia sẻ có tên không chuẩn, không phải dạng libNAME.so, vì vậy tôi không thể sử dụng tùy chọn -l thông thường. (Nó cũng xảy ra cũng là một phần mở rộng Python, và do đó không có tiền tố 'lib'.)Làm cách nào để liên kết bằng cách sử dụng GCC mà không có đường dẫn mã hóa cứng cho một thư viện không tuân theo quy ước đặt tên libNAME.so?
Tôi có thể chuyển đường dẫn đến tệp thư viện trực tiếp đến dòng lệnh liên kết, nhưng điều này làm cho đường dẫn thư viện trở thành hardcoded vào thực thi.
Ví dụ:
g++ -o build/bin/myapp build/bin/_mylib.so
Có cách nào để liên kết đến thư viện này mà không gây ra con đường để được hardcoded vào thực thi?
Điều này, thưa bạn, chính xác là những gì tôi đang tìm kiếm. Cảm ơn! – kbluck
Giúp tôi rất nhiều, cảm ơn bạn. –
Tôi thấy rằng kết quả này trong 'build/bin/_mylib.so' được nhúng trong thư viện được liên kết bằng cách sử dụng' -l: '- thay vì nhúng chỉ' _mylib.so' như bình thường đối với các tên son chuẩn. Kết quả là, khi bạn thử tải '_mylib.so', nó sẽ tìm kiếm đường dẫn đầy đủ đó (' ldd' sẽ hiển thị nó) và sẽ không tự tìm thấy '_mylib.so'. –