Comment s'appliquent -fvisibility option de symboles dans les bibliothèques statiques?

Je partage un projet de bibliothèque qui est construit à partir de 4 bibliothèques statiques (.a) et un objet (.o) fichier. Je suis en train d'ajouter la -fvisibility=hidden option pour limiter les symboles de la sortie pour seulement ceux que je marque dans la source avec un __attribute__.

J'ai ajouté le -fvisibility=hidden option pour les options de compilation pour le .so projet (qui couvre la .o fichier) et pour la .a projets.

Les symboles dans l'objet fichier sont supprimés comme prévu à partir de la dernière .so. Cependant, les symboles de la .a projets sont encore à l'étape de .so fichier. L'ajout de la -fvisibility=hidden option pour le .so lien de commande n'a aucun effet.

Ce que je fais mal?

Mon but ici est de supprimer à partir de la .so tous les symboles, sauf les fonctions de l'interface de la bibliothèque.

EDIT: en fait j'ai utilisé un carte de la version pour résoudre cela pour l'instant. Cependant, il exige le maintien de la version de script externe des symboles de changement. Accepté de répondre a une meilleure idée.