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