2016-02-25 88 views
0

我知道您可以使用AC_SEARCH_LIBS在庫中搜索特定功能,但這隻能告訴您庫是否在庫路徑中並滿足特定條件。有沒有一種簡單的方法來獲得路徑 - 或者更具體地說是滿足AC_SEARCH_LIBS的庫的前綴?使用自動工具在磁盤上查找磁帶庫的位置

例如,假設我寫

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

這只是讓我根據我是否沒有找到一個名爲包含DL的dlopen庫做一些事情,但它並沒有告訴我,該庫是在磁盤上。

我需要這樣做,因爲我打包的某個程序的構建命令需要前綴作爲庫,而不僅僅是庫名稱。

+1

你可以添加一個調用pkgconfig來獲取你的庫的路徑嗎? – Jimmy

回答

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_VARon my Autotools Mythbuster的信息。

對於系統庫和一般庫,沒有標準的方法來這麼做 - 主要是因爲交叉編譯意味着當你真正運行軟件時你並不真正知道那條路是什麼。

如果你可以提供你想要做的更多細節,找到一個通用的解決方案可能會更容易。