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