¿Cómo aplicar la opción -visibilidad a los símbolos en bibliotecas estáticas?
Tengo un proyecto de biblioteca compartida que se construye a partir de 4 bibliotecas estáticas (.a
) y un objeto (.o
) archivo. Estoy tratando de agregar el-fvisibility=hidden
opción para restringir los símbolos en la salida a solo aquellos que marque en la fuente con un __atributo__.
He añadido el-fvisibility=hidden
opción para las opciones de compilación para el.so
proyecto (que cubre el.o
archivo) y para el.a
proyectos
Los símbolos en el archivo objeto se eliminan como se esperaba de la versión final..so
. Sin embargo, los símbolos de la.a
todos los proyectos aún están en la final.so
archivo. Agregar el-fvisibility=hidden
opción a la.so
El comando de enlace no tiene ningún efecto.
¿Qué estoy haciendo mal?
Mi propósito aquí es eliminar del.so
todos los símbolos, excepto la interfaz, funcionan con la biblioteca.
EDITAR: en realidad usé unmapa de versión para resolver esto por ahora. Sin embargo, requiere un mantenimiento continuo del script de versión a medida que cambian los símbolos externos. La respuesta aceptada tiene una mejor idea.