Estoy buscando formas de restringir el número de símbolos C exportados a una biblioteca estática de Linux (archivo). Me gustaría limitar estos a solo aquellos símbolos que son parte de la API oficial de la biblioteca. Ya uso 'estático' para declarar la mayoría de las funciones como estáticas, pero esto las restringe al alcance del archivo. Estoy buscando una forma de restringir el alcance a la biblioteca.Restricción de símbolos en una biblioteca estática de Linux
Puedo hacer esto para bibliotecas compartidas usando las técnicas en How to Write Shared Libraries de Ulrich Drepper, pero no puedo aplicar estas técnicas a archivos estáticos. En su anterior Good Practices in Library Design papel, escribe:
La única posibilidad es combinar todos los archivos de objetos que necesitan ciertos recursos internos en una usando -r 'ld' y luego restringir los símbolos que son exportados por esto combinado archivo de objeto. El enlazador GNU tiene opciones para hacer solo esto.
¿Alguien podría ayudarme a descubrir cuáles podrían ser estas opciones? He tenido cierto éxito con 'strip -w -K prefix_ *', pero esto se siente brutal. Idealmente, me gustaría una solución que funcione tanto con GCC 3 como con 4.
¡Gracias!
Funcionaría si tiene todo en un archivo o puede compilarlo. A menudo no lo haces. A veces necesitas tener pequeños archivos para combinar con otros idiomas (por ejemplo, Haskell, esa es la razón por la que encontré esta página). –
@Maciej: Bien OP preguntó acerca de gcc ... – Joshua