Я создаю разделяемую библиотеку для дистрибутива Debian GNU / Linux и беспокоюсь о количестве символов из внутренних функций, которые он экспортирует без какой-либо необходимости. Поскольку библиотека построена с использованием autoconf / automake / libtool, ответ прост: я могу просто добавить -export-symbols libfoo.sym
в libfoo_la_LDFLAGS
и укажите только те символы, которые я хочу экспортировать в этот файл.
Но так как это связано с подверженной ошибкам ручной работой, я решил, что должен быть лучший способ. Можно ли автоматизировать чтение (в данном случае) десятков .h
файлы, которые сопровождают библиотеку и генерируют первую версию libfoo.syms
файл.
Могу ли я просто использовать компилятор C (или C ++), чтобы выполнить за меня занятую работу?
Это эквивалентно извлечению прототипов функций и рассматривается здесь:
Извлечение прототипов функций C / C ++
Но так как это связано с подверженной ошибкам ручной работой, я решил, что должен быть лучший способ. Можно ли автоматизировать чтение (в данном случае) десятков файлов .h, которые сопровождают библиотеку, и создать первую версию файла libfoo.syms.
Это может быть более полезным для использования nm
на объектных файлах вместо того, чтобы пытаться разобрать заголовочные файлы. nm
можно сказать ограничить вывод только экспортом.
Могу ли я просто использовать компилятор C (или C ++), чтобы выполнить за меня занятую работу?
Некоторые компиляторы имеют инструменты, чтобы помочь с этим, например, GCC видимость служба поддержки.
Но настоящая проблема в том, что вы должны знать, какие функции должны быть экспортированы, а какие нет.