如何从automake/libtool库中获取符号列表?

如何从automake/libtool库中获取符号列表?,automake,libtool,Automake,Libtool,我是MPEG音频第2层编码库的维护者。它是使用autoconf/automake/libtool构建的 作为构建/测试过程的一部分,我希望获得可见/导出符号的列表,并将其与版本控制文件进行比较,以确保只有预期符号可见 在Mac OS上,我可以使用nm-glibtwolame/.libs/libtwolame.dylib成功地获得符号列表。然后,我打算编写一个脚本,从nm输出中提取符号,并将其与文件进行比较,作为make check目标的一部分 但我不知道如何计算脚本中二进制库的路径。有没有办法要

我是MPEG音频第2层编码库的维护者。它是使用autoconf/automake/libtool构建的

作为构建/测试过程的一部分,我希望获得可见/导出符号的列表,并将其与版本控制文件进行比较,以确保只有预期符号可见

在Mac OS上,我可以使用
nm-glibtwolame/.libs/libtwolame.dylib
成功地获得符号列表。然后,我打算编写一个脚本,从
nm
输出中提取符号,并将其与文件进行比较,作为
make check
目标的一部分

但我不知道如何计算脚本中二进制库的路径。有没有办法要求
libtool
,获取
libtwolame/libtwolame.la
并返回
libtwolame/.libs/libtwolame.dylib
(或者
libtwolame/.libs/libtwolame.so
)?
或者使用automake宏可以执行的任何操作?

如果您已经有一个包含导出符号列表的版本控制文件(例如,
libtwolame.sym
),您可以告诉libtool仅导出该文件中列出的符号

只需将三行添加到
Makefile.am

EXTRA_DIST += libtwolame.sym
libtwolame_la_DEPENDENCIES += ${srcdir}/libtwolame.sym
libtwolame_la_LDFLAGS += -export-symbols ${srcdir}/libtwolame.sym
很长一段时间以来,我们一直在使用该系统来控制导出到库用户的符号列表以及由动态加载的相机驱动程序导出的符号

警告:引用(我的重点):

-导出符号符号文件

告诉链接器仅导出symfile中列出的符号。符号文件应以.sym结尾,并且每行必须包含一个符号的名称此选项在某些平台上不起作用。默认情况下,将导出所有符号


这回答了你的问题吗?谢谢,知道这一点真的很有用。向上投票,但不是选择正确答案,因为作为LegendofPedro链接到的另一个问题,我认为实际上不可能做到我最初提出的问题。