【发布时间】:2014-01-23 16:07:15
【问题描述】:
我正在为 Debian GNU/Linux 发行版构建一个共享库,我担心它在不需要的情况下导出的内部函数的符号数量。由于该库是使用 autoconf/automake/libtool 构建的,因此答案很简单:我可以将 -export-symbols libfoo.sym 添加到 libfoo_la_LDFLAGS 并仅指定要在该文件中导出的符号。
但由于这涉及容易出错的手动工作,我认为必须有更好的方法。是否可以自动读取(在这种情况下)库随附的数十个 .h 文件并生成 libfoo.syms 文件的第一个版本。
我可以只使用 C(或 C++)编译器为我完成繁重的工作吗?
【问题讨论】:
-
如果您为库 API 使用了某种“命名空间”,您可以考虑使用
-export-symbols-regex REGEX选项。 -
@BrettHale 是的,我曾考虑过,但可以肯定的是,我仍然需要阅读所有这些头文件。 (我不是作者。)
-
我能想到的唯一另一种自动化流程的方法是使用ctags。它可能已经安装在您的系统上。
标签: c++ c linux shared-libraries libtool