Restringindo símbolos em uma biblioteca estática do Linux

Estou procurando maneiras de restringir o número de símbolos C exportados para uma biblioteca estática do Linux (arquivo morto). Gostaria de limitar esses valores apenas aos símbolos que fazem parte da API oficial da biblioteca. Eu já uso 'static' para declarar a maioria das funções como estáticas, mas isso as restringe ao escopo do arquivo. Estou procurando uma maneira de restringir o escopo à biblioteca.

Posso fazer isso para bibliotecas compartilhadas usando as técnicas de Ulrich DrepperComo escrever bibliotecas compartilhadas, mas não posso aplicar essas técnicas a arquivos estáticos. Em seu anteriorBoas Práticas em Design de Bibliotecas papel, ele escreve:

A única possibilidade é combinar todos os arquivos de objetos que precisam de certos recursos internos em um único usando 'ld -r' e depois restringir os símbolos que são exportados por esse arquivo de objeto combinado. O vinculador GNU tem opções para fazer exatamente isso.

Alguém poderia me ajudar a descobrir quais seriam essas opções? Eu tive algum sucesso com 'strip -w -K prefix_ *', mas isso parece brutal. Idealmente, eu gostaria de uma solução que funcione com o GCC 3 e 4.

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion