2017-03-21 55 views
1

我需要鏈接libmagic到我的項目,它是用autotools構建的。鏈接圖書館和自動工具的正確方法

我目前的解決辦法是:LIBS+="-lmagic"configure.ac

,但我認爲更合適的方式,這將使用在Makefile.am configure.acLDADD = @[email protected]PKG_CHECK_MODULES宏,不幸的是這是行不通的實現。

這裏就是我從./configure

configure: error: Package requirements (magic) were not met: 

No package 'magic' found 

Consider adjusting the PKG_CONFIG_PATH environment variable if you 
installed software in a non-standard prefix. 

我覺得這事做在pkg-config中沒有libmagic的, 任何想法得到些什麼?

回答

1

我認爲一個更合適的方式來實現,這將在configure.ac使用PKG_CHECK_MODULES宏[...]

只有當你真正擁有一個libmagic pkg配置數據文件,甚至然後there is some controversy around PKG_CHECK_MODULES。據我所知,the implementation you are probably using不提供pkg-config文件。當然,你可以自己寫,但是這會破壞目的。

如果您要依賴標題和庫安裝在其中一個標準位置 - 這是常規的和非常合理的 - 那麼配置該構建的更習慣方式將是測試configure他們的存在。例如,

AC_CHECK_HEADER([magic.h], [], [ 
    AC_MSG_ERROR([required header magic.h not found]) 
]) 
AC_SEARCH_LIBS([magic_open], [magic], [], [ 
    AC_MSG_ERROR([required library libmagic not found]) 
]) 

注意AC_SEARCH_LIBS()會自動一旦發現前面加上-lmagicLIBS

通過提供configure選項,用戶可以指定頭和庫的替代位置,但這似乎不是您要查找的內容,您可能會更喜歡它,而且看起來好像它會過度libmagic。

0

您需要libmagic的pkgconfig文件。如果PKG_CONFIG_PATH中沒有magic.pc,則必須編寫自定義autoconf宏來設置MAGIC_LIBS。