PKG_CHECK_MODULES未定义

一直以来,对于使用automake有点害怕,网上的大多资料都是说明autoconf生成什么文件,automake又做什么事情,还有autoscan等等。
笔者在使用开源项目过程中遇到了一个问题:
PKG_CHECK_MODULES未定义!
奇怪,所有解决方式都说需要安装pkgconfig包,可是明明安装了啊,为啥还是不行呢?

经过大约1天的时间阅读了GNU的automake的官方文档,也发现通过一个图就可以理解automake是如何工作的,可是如何解决问题,我发现在不懂原理的情况下,还是不行的。

首先说一下解决这个问题的方式是:
把安装目录下的m4宏文件复制到项目的m4文件夹中,重新执行autoreconf命令。
使用autoreconf -I /usr/share/aclocal同样可以解决问题,不过,对于有些开源项目自带m4宏文件,而这些宏文件和系统安装的版本不一致时,同样会出现问题,所以最好的方式是把需要的宏文件复制到m4文件夹中更好。
另外注意:如果存在多个aclocal版本时,可能找到的文件不全。
通过命令:

aclocal --verbose

确认一下找打的m4文件中存在需要的m4文件,如果没有,在系统中找找,可能在其他目录,可以复制到这个新的目录。

重新生成以下configure就可以了,为什么会这样呢?
这就得从原理说起了。
configure.ac是autoconf的输入文件,输出configure脚本(可执行的shell脚本),而configure.ac需要经过autoconf反映,其中可以定义宏,即M4宏。而PKG_CHECK_MODULES宏就是一个M4宏,在pkgconfig安装包中会安装到系统中,CentOS7下,缺省目录是:/usr/share/aclocal/pkg.m4,这个文件缺省情况下,无法被autoconf找到!
而通过-I参数(大写的i)可以修改这个值。参考:6.1.1.1. What About -I m4?

这样,M4的宏才会被autoconf解析成可以执行的脚本。

工具的确可以减少开发工作,可是工具本身,还是需要理解才可以使用。学习英文,读官方文档是最快的学习方式。
Autoconf文档

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值