使用autotools在磁盘上查找库的位置

时间:2016-02-25 18:20:49

标签: autotools

我知道您可以使用AC_SEARCH_LIBS在库中搜索特定函数,但这只会告诉您库是否在库路径中并且满足某些条件。是否有一种简单的方法来获取路径 - 或者更具体地说是满足AC_SEARCH_LIBS的库的前缀?

例如,说我写了

AC_SEARCH_LIBS([dlopen],[dl],[],[])

这只是让我根据我是否找到一个名为dl的包含dlopen的库来做某事,但它并没有告诉我该库在磁盘上的位置。

我需要这样做,因为我正在包装的程序之一的构建命令需要库的前缀,而不仅仅是库名。

1 个答案:

答案 0 :(得分:0)

除了使用pkg-config之外,没有标准的方法可以做你想做的事情。如果您要查找的库提供.pc个文件,您可以查询它的libdir变量以找出文件可能位置(尽管不能保证它。)

PKG_CHECK_VAR([FOO_LIBDIR], [foo], [libdir])
AC_MSG_CHECKING([foo library path])
AS_IF([test "x$FOO_LIBDIR" = "x"], [
  AC_MSG_FAILURE([Unable to identify foo lib path.])
])

您可以在PKG_CHECK_VAR on my Autotools Mythbuster找到更多相关信息。

对于系统库和一般库,没有标准的方法可以这样做 - 主要是因为交叉编译意味着你实际上并不知道实际运行软件时该路径是什么。

如果您可以提供有关您尝试执行的操作的更多详细信息,则可能更容易找到常规解决方案。