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.