我设法解决了。约翰·卡索特(John Calcote)出色的《自动工具》(Autotools)书中的这条注释为我指明了正确的方向:
链接器将在命令行上显式指定的每个目标文件添加到二进制产品中,但是它们仅从归档中提取在链接的代码中实际引用的那些目标文件。
要抵消这种行为,可以使用该
--whole-archive标志来libtool。但是,这也会导致从所有系统库中提取所有符号,从而导致许多双重符号定义错误。因此,
--whole-archive需要
libconvenience.a在链接器命令行上紧接其前,并且紧随其后,
--no-whole-archive以免其他库受到这种对待。这有点困难,因为automake和libtool不能真正保证在命令行上将标志保持相同的顺序,但是这一行
Makefile.am起到了作用:
myprogram_LDFLAGS = -Wl,--export-dynamic -Wl,--whole-archive,libconvenience/libconvenience.a,--no-whole-archive



