2012-06-05 16 views
5

Tôi đang tạo thư viện đối tượng dùng chung sẽ được LD_PRELOADed với chương trình của tôi. Trong thư viện được chia sẻ đó, tôi cũng muốn sử dụng một số biến từ chương trình của mình. Cách khai báo các biến này là gì. Lưu ý rằng thư viện đối tượng được chia sẻ được biên dịch riêng biệt với chương trình của tôi.Cách chia sẻ biến trong thư viện đối tượng được chia sẻ

Trả lời

2

Có. Bạn phải liên kết chương trình của mình với --export-dynamic để làm cho bảng biểu tượng của chương trình có thể truy cập được vào các thư viện đã mở. Nếu bạn muốn kiểm soát chính xác các ký hiệu nào có sẵn và sử dụng libtool để liên kết, bạn có thể sử dụng các tham số như -export-symbols-regex để chỉ định các biểu tượng có sẵn. Nếu các biểu tượng được yêu cầu bởi thư viện không có sẵn khi chương trình tải, nó sẽ thất bại với một biểu tượng không xác định. Một số nền tảng yêu cầu cờ liên kết hơi khác nhau (đặc biệt là Windows). Xem xét sử dụng libtool để làm cho điều này dễ dàng hơn nếu bạn chưa sẵn sàng.