Como aplicar a opção -fvisibility a símbolos em bibliotecas estáticas?

Eu tenho um projeto de biblioteca compartilhada que é criado a partir de 4 bibliotecas estáticas (.a) e um objeto (.o) Arquivo. Estou tentando adicionar o-fvisibility=hidden opção para restringir os símbolos na saída apenas aos marcados na fonte com um __attribute__.

Eu adicionei o-fvisibility=hidden opção para as opções de compilação para o.so projeto (que abrange o.o arquivo) e para o.a projetos.

Os símbolos no arquivo de objeto são removidos conforme o esperado da final.so. No entanto, os símbolos do.a todos os projetos ainda estão na final.so Arquivo. Adicionando o-fvisibility=hidden opção para o.so O comando link não tem efeito.

O que estou fazendo errado?

Meu objetivo aqui é remover do.so todos os símbolos, exceto a interface, funcionam para a biblioteca.

EDIT: Eu realmente usei ummapa de versão para resolver isso por enquanto. No entanto, requer manutenção continuada do script da versão à medida que os símbolos externos mudam. A resposta aceita tem uma ideia melhor.

questionAnswers(3)

yourAnswerToTheQuestion