Я ищу способы ограничить количество символов C, экспортированных в статическую библиотеку Linux (архив). Я хотел бы ограничить их только теми символами, которые являются частью официального API для библиотеки. Я уже использую "статический", чтобы объявлять большинство функций статическими, но это ограничивает их область действия. Я ищу способ ограничить область видимости в библиотеке.
Я могу сделать это для разделяемых библиотек, используя методы в Ulrich Drepper Как писать общие библиотеки, но я не могу применять эти методы для статические архивы. В своей предыдущей статье Good Practices in Library Design он пишет:
Единственная возможность - объединить все файлы объектов, которые необходимы некоторые внутренние ресурсы в один, используя 'ld -r', а затем ограничивают символы которые экспортируются этим объединенным объектным файлом. У компоновщика GNU есть сделайте именно это.
Может ли кто-нибудь помочь мне узнать, какие могут быть эти варианты? У меня был некоторый успех с 'strip -w -K prefix_ *', но это кажется грубым. В идеале я бы хотел найти решение, которое будет работать как с GCC 3, так и с 4.
Спасибо!