AutoConf - 处理重复库的AC_CHECK_LIB

时间:2014-01-18 14:34:43

标签: duplicates libraries conflict autoconf

假设我有/foo/X.a/foo/X.dylib以及LDFLAGS=-L/fooAC_CHECK_LIB会做什么? .dylib保证优先于.a吗?反之亦然?随机?

假设我有/foo/Y.a/bar/Y.a以及LDFLAGS=-L/foo:/bar?那会发生什么?

有没有办法手动建立优先权?

2 个答案:

答案 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函数中(添加了适当的库)并查看它是否链接。