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

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

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

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

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

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

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

Ответы на вопрос(3)

Ваш ответ на вопрос