Как применить параметр -fvisibility к символам в статических библиотеках?

У меня есть проект общей библиотеки, который построен из 4 статических библиотек (.a) и один объект (.o) файл. Я пытаюсь добавить-fvisibility=hidden возможность ограничить символы в выводе только теми, которые я отмечаю в источнике с __attribute__.

Я добавил-fvisibility=hidden вариант для параметров компиляции для.so проект (который охватывает.o файл) и для.a проекты.

Символы в объектном файле удаляются, как и ожидалось из финала.so, Однако символы из.a проекты все еще в финале.so файл. Добавление-fvisibility=hidden вариант к.so Команда link не имеет никакого эффекта.

Что я делаю неправильно?

Моя цель здесь состоит в том, чтобы удалить из.so все символы, кроме функций интерфейса библиотеки.

РЕДАКТИРОВАТЬ: я на самом деле использовалкарта версий чтобы решить это сейчас. Однако это требует постоянного обслуживания скрипта версии при изменении внешних символов. Принятый ответ имеет лучшую идею.