假设我有/foo/X.a
和/foo/X.dylib
以及LDFLAGS=-L/foo
。 AC_CHECK_LIB
会做什么? .dylib
保证优先于.a
吗?反之亦然?随机?
假设我有/foo/Y.a
和/bar/Y.a
以及LDFLAGS=-L/foo:/bar
?那会发生什么?
有没有办法手动建立优先权?
答案 0 :(得分:2)
autoconf
未解决此问题。在您同时拥有/foo/X.a
和/foo/X.dylib
的情况下,configure
脚本只会尝试与libX
链接,并会执行您的工具链。如果链接器使用X.a
,则configure
脚本将使用X.a
进行测试。如果链接器使用X.dylib
,则configure
脚本将使用该脚本。因此,建立优先权的方法取决于您的工具链(例如,您可以将-Bstatic
添加到LDFLAGS
)。
答案 1 :(得分:1)
有没有办法手动建立优先权?
您使用-L
选项手动设置precedence of library search。
如果我有/foo/Y.a和/bar/Y.a,以及LDFLAGS = -L / foo:/ bar怎么办? 那会发生什么?
它将在默认库路径之前查看目录/foo:/bar
。从你的问题中不清楚Y.a
是否实际上应与任何事物联系起来。
AC_CHECK_LIB会做什么? .dylib保证优先于.a吗?反之亦然?随机?
它不会是随机的,但会受到configure
的其他选项的影响(例如LDFLAGS
,--disable-shared
等)。所有AC_CHECK_LIB
所做的就是将所选函数的名称放入main
函数中(添加了适当的库)并查看它是否链接。