He estado en una cruzada últimamente para eliminar las advertencias de nuestro código y me he familiarizado con las banderas de advertencia de GCC (como -Wall
, -Wno-<warning to disable>
, -fdiagnostics-show-option
, etc.). Sin embargo, no he podido averiguar cómo desactivar (o incluso controlar) las advertencias del enlazador. La advertencia enlazador más común que estaba recibiendo es de la siguiente forma:¿Cómo se suprimen las advertencias del enlazador GCC?
ld: warning: <some symbol> has different visibility (default) in
<path/to/library.a> and (hidden) in <path/to/my/class.o>
La razón por la que estaba haciendo esto se debió a la biblioteca que estaba usando se construyó usando la visibilidad default
mientras mi aplicación está construida con hidden
visibilidad. Lo solucioné reconstruyendo la biblioteca con visibilidad de hidden
.
Mi pregunta es: ¿cómo podría suprimir esa advertencia si quisiera? No es algo que tenga que hacer ahora que he descubierto cómo solucionarlo, pero aún siento curiosidad por saber cómo suprimirías esa advertencia en particular, ¿o alguna advertencia de linker en general?
El uso del -fdiagnostics-show-option
para cualquiera de los indicadores de C/C++/linker no indica de dónde viene esa advertencia, como con otras advertencias del compilador.
página de manual para ld no dice que haya ninguna opción para desactivar las advertencias del enlazador :( –