У меня есть проект общей библиотеки, который построен из 4 статических библиотек (.a) и одного объекта (.o). Я пытаюсь добавить параметр -fvisibility=hidden для ограничения символов на выходе только теми, которые я отмечаю в источнике с помощью __ атрибута __.
Я добавил параметр -fvisibility=hidden в параметры компиляции для проекта .so (который охватывает файл .o) и для проектов .a.
Символы в объектном файле удаляются, как ожидалось, из окончательного .so. Однако символы из проектов .a все еще находятся в финальном файле .so. Добавление опции -fvisibility=hidden в ссылку .so не имеет эффекта.
Что я делаю неправильно?
Моя цель - удалить из .so все символы, кроме функций интерфейса, в библиотеку.
EDIT: я фактически использовал карту для решения этой проблемы на данный момент. Однако это требует продолжения обслуживания версии script по мере изменения внешних символов. Принятый ответ имеет лучшую идею.