Gần đây tôi đã có một cuộc thập tự chinh để loại bỏ cảnh báo khỏi mã của chúng tôi và trở nên quen thuộc với cờ cảnh báo GCC (chẳng hạn như -Wall
, -Wno-<warning to disable>
, -fdiagnostics-show-option
, v.v.). Tuy nhiên tôi đã không thể tìm ra cách để vô hiệu hóa (hoặc thậm chí kiểm soát) cảnh báo mối liên kết. Cảnh báo mối liên kết phổ biến nhất mà tôi đã nhận được có dạng sau:Làm cách nào để ngăn chặn cảnh báo liên kết GCC?
ld: warning: <some symbol> has different visibility (default) in
<path/to/library.a> and (hidden) in <path/to/my/class.o>
Lý do tôi đã nhận được điều này là do thư viện tôi đã sử dụng được xây dựng sử dụng khả năng hiển thị default
trong khi ứng dụng của tôi được xây dựng với hidden
tầm nhìn. Tôi đã sửa lỗi này bằng cách xây dựng lại thư viện với mức hiển thị hidden
.
Câu hỏi của tôi là: làm thế nào tôi có thể ngăn chặn cảnh báo đó nếu tôi muốn? Nó không phải cái gì mà tôi cần phải làm bây giờ mà tôi đã tìm ra cách để sửa chữa nó nhưng tôi vẫn tò mò như thế nào bạn sẽ ngăn chặn cảnh báo cụ thể đó - hoặc bất kỳ cảnh báo liên kết nói chung?
Sử dụng -fdiagnostics-show-option
cho bất kỳ cờ C/C++/linker nào không nói cảnh báo đến từ đâu cùng với cảnh báo trình biên dịch khác.
trang người dùng cho ld không cho biết có bất kỳ tùy chọn nào để tắt cảnh báo liên kết: ( –