【发布时间】:2014-06-05 16:00:14
【问题描述】:
我有这个目录结构
prog/libA
prog/libB
在 libA 中,我有一个 Makefile.am,如下所示:
noinst_LTLIBRARIES = libA.la
libA_la_SOURCES = ...
libA_la_LIBADD = ... $(LAPACK)
其中 LAPACK 是我系统的 lapack 安装。这按预期工作。然而,在 libB 我有这个:
noinst_LTLIBRARIES = libB.la
bin_PROGRAMS = compLibB
libB_la_SOURCES = ...
compLibB_SOURCES = ...
libB_LIBADD = $(top_builddir)/libA/libA.la ...
compLibB_LDADD = libB.la
这不起作用。 compLibB 的链接阶段抱怨对 LAPACK 的未定义引用,除非我将最后一行更改为
compLibB_LDADD = libB.la $(LAPACK)
但这似乎是多余的。当我构建libA.la 便利库时,我不是已经链接到$(LAPACK) 了吗?它是不干净的,因为现在 compLibB 必须关注 libA 的细节。有没有办法在 libA 构建阶段链接 LAPACK 库,这样我就不必在 compLibB 构建阶段重新指定它?
【问题讨论】:
-
它应该可以工作!例如,在 xapian omega 应用程序 (xapian.org/docs/xapian-omega-1.2.21/NEWS) 中使用了相同的方法。但它没有——我在尝试构建 omega 应用程序时遇到了与问题中描述的相同的问题......