我是Autotools的新手,目前正在尝试创建 configure.ac 文件,以便检查以后安装程序的几个依赖项。
现在,我想检查某些库的存在,并且我发现使用AC_CHECK_LIB可以做到这一点。我认为PCK_CHECK_MODULES也可以提供帮助,但我想坚持前者,除非PCK_CHECK_MODULES解决了我的问题:
AC_CHECK_LIB执行的操作是查找库并执行操作(如果找到)或其他操作(如果找不到),但我的问题是:
如果AC_CHECK_LIB找到我的库,我该如何获得该库的确切路径?也就是说,如果我有的AC_CHECK_LIB是:
AC_CHECK_LIB(foo,函数,[action-if-found],[action-if-not-found])
如果找到了这个 foo 库的完全路径,有什么办法吗?
谢谢,
答案 0 :(得分:1)
如果AC_CHECK_LIB找到我的库,我该如何获得该库的确切路径?
AC_CHECK_LIB
没有提供任何机制,您可以这样做。它本身并不确定实际位置。每its documentation,这就是它实际做的事情:
通过尝试链接测试来测试库
library
是否可用 用库调用函数function
的程序。function
应该 是图书馆提供的功能。
当AC_CHECK_LIB
成功时,它只知道链接器找到了与给定库名相对应的库,该库提供具有指定函数名的函数。它不知道链接器找到它的 。另一方面,当宏没有找到一个库时,这并不一定意味着它不可用,而是链接器找不到它受制于链接选项(如果有的话)有效那时候。
另请注意,这对于许多目的来说非常令人满意。只有在想要使用它来定位其他相关资源时,才需要知道实际位置。 configure
在没有帮助的情况下找到图书馆的情况很少见,但需要额外的信息来查找相关资源。