thời gian gần đây tôi phát hiện ra các tùy chọn liên kết "-Bsymbolic chức năng" trong GNU ld:Có nhược điểm nào khi sử dụng các chức năng -Bymymbolic?
-Bsymbolic
When creating a shared library, bind references to global symbols to the
definition within the shared library, if any. Normally, it is possible
for a program linked against a shared library to override the definition
within the shared library.
This option is only meaningful on ELF platforms which support shared libraries.
-Bsymbolic-functions
When creating a shared library, bind references to global function symbols
to the definition within the shared library, if any.
This option is only meaningful on ELF platforms which support shared libraries.
này có vẻ là nghịch đảo của các tùy chọn GCC -fvisibility=hidden
, trong đó thay vì ngăn chặn việc xuất khẩu của hàm tham chiếu đến khác các đối tượng được chia sẻ, nó ngăn cản các tham chiếu nội bộ thư viện đến hàm đó khỏi bị ràng buộc với một hàm được xuất khẩu của một đối tượng được chia sẻ khác. Tôi đã thông báo rằng -Bsymbolic-functions
sẽ ngăn việc tạo các mục nhập PLT cho các chức năng, đó là một hiệu ứng phụ tốt đẹp.
Nhưng tôi đã tự hỏi liệu có lẽ là một điều khiển các tinh chỉnh trên này, như ghi đè
-Bsymbolic
cho các định nghĩa chức năng riêng biệt của thư viện.Tôi có nên biết bất kỳ cạm bẫy nào khi sử dụng
-Bsymbolic-functions
không? Tôi dự định chỉ sử dụng điều đó, bởi vì-Bsymbolic
sẽ phá vỡ các ngoại lệ, tôi nghĩ (nó sẽ làm cho nó để tham chiếu đến các đối tượng typeinfo không thống nhất, tôi nghĩ).
Cảm ơn!
Bạn là độ phân giải tuyệt vời, hạnh phúc đến giờ liên kết địa ngục cho tôi. Tôi yêu bạn. –