仅链接到库一次

时间:2012-11-07 21:07:45

标签: makefile autotools automake

我有我的主应用程序和两个库:foo和bar。 foo在某些方法中使用bar,并且在LDADD中指定了它。 我的主应用程序使用foo和间接bar,因此它在Makefile中有LDADD = foo。

在这种情况下,如果我还没有为我的主应用程序将LD库添加到LDADD,我将收到编译错误。

未定义的参考;它说来自foo的.so文件需要来自bar的.so文件。

我不明白这一点。 一旦我用LDADD = bar编译(非静态)foo,为什么我在编译使用foo的应用程序时又需要它?

1 个答案:

答案 0 :(得分:1)

您没有指定foo和/或bar是否是作为源树的一部分构建的libtool库。如果是,libtool应该采取链接。即,因为foo需要bar作为图书馆的一部分:

libfoo_la_LIBADD = ../bar/libbar.la # in: foo/Makefile.am

prog_LDADD = ../foo/libfoo.la # in: app/Makefile.am