你似乎混淆,所以我會去有點切線的位置:
曾幾何時,有X11;有許多不兼容的X11安裝。要編寫針對每個變體編譯的代碼,人們會編寫瘋狂的autoconf宏,試圖自動找出之前要列出的庫,後續列出的庫以及之間需要的額外標記。 (見AC_PATH_X
,AC_PATH_XTRA
)。
有些人嘗試了更明智的方法,並且編寫了shell腳本以安裝在庫中;所以你只需打電話給他們,他們會給你所有特定庫所需的魔法標誌。 (見sdl-config
,wx-config
,freetype-config
,motif-config
等)
然後從freedesktop.org鄉親決定是爲大家維護,基本上做同樣的事情這些腳本是件苦差事,所以他們寫了一個工具(pkg配置)可以像所有這些*-config
腳本一樣工作,並且不需要運行shell(針對Windows用戶)。所有庫作者需要做的是將元數據寫入*.pc
文件中,並沿庫中安裝它們。
關於autoconf的,它具有低級別的方法來捅系統周圍,以瞭解該庫:AC_CHECK_HEADERS
,看是否標頭是存在並且可用,並AC_CHECK_LIB
,看看它是否可以鏈接反對他們。
pkg-config工具帶有用於autoconf的便利宏,主要是PKG_CHECK_MODULES
,它不是四處查找,而是簡單地查找庫可能安裝的元數據。
關於libm,libdl,如ldav1s所說,它們是系統的一部分;有些系統需要與libm(提供數學函數)和/或libdl(提供動態加載共享對象的函數)的顯式鏈接。通常,其他工具(如gcc或libtool)負責與它們進行鏈接。不幸的是,它們沒有提供pkg-config的元數據,所以如果你必須手動找到它們,你必須捅過舊的AC_CHECK_HEADERS
和AC_CHECK_LIB
宏才能找到它們。
沒有'PKG_CHECK_LIB'這樣的東西。 – DanielKO