2017-03-21 50 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。