我是MPEG Audio Layer 2编码库twolame的维护者。它是使用autoconf / automake / libtool构建的。
作为构建/测试过程的一部分,我希望获得可见/导出符号的列表,并将其与版本控制的文件进行比较,以确保仅可见期望的符号。
在Mac OS上,我可以使用nm -g libtwolame/.libs/libtwolame.dylib
成功获取符号列表。然后,我打算编写一个脚本来从nm
输出中提取符号,并将其与文件进行比较,作为make check
目标的一部分。
但是不确定如何在脚本中计算二进制库的路径。有没有办法让libtool
取libtwolame/libtwolame.la
并返回libtwolame/.libs/libtwolame.dylib
(或在Linux上为libtwolame/.libs/libtwolame.so
)?还是可以使用自动制作宏完成的任何事情?
如果您已经具有包含导出符号列表的版本控制文件(例如libtwolame.sym
,为什么不只告诉libtool仅导出该文件中列出的符号?
只需要在Makefile.am
中添加三行:
EXTRA_DIST += libtwolame.sym
libtwolame_la_DEPENDENCIES += ${srcdir}/libtwolame.sym
libtwolame_la_LDFLAGS += -export-symbols ${srcdir}/libtwolame.sym
很长时间以来,我们一直将该系统用于libgphoto2,以控制导出到我们的库用户的符号列表以及动态加载的相机驱动程序导出的符号的列表。