PKG_CHECK_MODULES未定义

2023-10-26

一直以来,对于使用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文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PKG_CHECK_MODULES未定义 的相关文章

随机推荐

  • Java NIO 的前生今世 之一 简介

    Java NIO 是由 Java 1 4 引进的异步 IO Java NIO 由以下几个核心部分组成 Channel Buffer Selector NIO 和 IO 的对比 IO 和 NIO 的区别主要体现在三个方面 IO 基于流 Str
  • 【Matlab学习笔记】【图像滤波去噪】中值滤波

    中值滤波程序 clc clear all J imread F 图像去噪 4 jpg I rgb2gray J subplot 1 2 1 imshow I title 原始图像 K medfilt2 I 4 4 进行中值滤波 subplo
  • debian linux root登录,DEBIAN 10切换ROOT用户登录

    ebian 10默认的一样不能用root用户登录 还是需要设置 方法如下 一 打开终端 用普通用户登录 输入 su 输入密码 切换到root用户 二 设置root用户登录 nano etc ssh sshd config 三 修改配置 Pe
  • 《百面机器学习》学习笔记之经典算法(支持向量机SVM、逻辑回归LR、决策树DT)

    第三章 经典算法 01 支持向量机 支持向量机 Support Vector Machine SVM 是监督学习方法 将低维的数据映射到高维的核映射空间 寻找 分类超平面 将不同类别的数据区分开 在空间上线性可分的两类点 分别向SVM分类的
  • 什么是负边沿触发_负边沿jk触发器功能测试

    负沿jk触发器有什么特点 JK触发器是数字电路触发器中的一种基本电路单元 JK触发器具有置0 置1 保持和翻转功能 在各类集成触发器中 JK触发器的功能最为齐全 在实际应用中 它不仅有很强的通用性 而且能灵活地转换其他类型的触发器 由JK触
  • 前端重新学习(5)DOM与DOM2、DOM3区别以及DOM2新特性

    摘抄自他人笔记 http itbilu com javascript js Vyxodm 1g html https blog csdn net pxy lele article details 49755071 感谢分享 目录 DOM0
  • 开关电源matlab仿真设计报告,基于MATLAB的开关电源反馈控制系统的设计和仿真

    电源世界 年第七期 模型 方法 仿真以 人傲抓 汇 基于 的 开 关 电源 反 馈 控 制 系 统 的设 计和 仿真 李洪文 毛佳 吉林大学 长春 摘 要 本 洲 十州 关电源 的模 型 和 反馈控制 系统进行 了分 析 及 设 计 并 采
  • @Inner使用及原理

    外部从Gateway访问 需要鉴权 eg CURD操作 这种是最常使用的 用户登录后正常访问接口 不需要我们做什么处理 可能有的接口需要加权限字段 外部从Gateway访问 不需要鉴权 eg 短信验证码 需要我们将uri加入到securit
  • Python 类和实例

    可以自由地给一个实例变量绑定属性 比如 给实例bart绑定一个name属性 gt gt gt bart name Bart Simpson gt gt gt bart name Bart Simpson 由于类可以起到模板的作用 因此 可以
  • 写测试用例、重构函数、生成SQL查询……原来CodeGeeX还能做这些!

    CodeGeeX中的智能问答功能 Ask CodeGeeX 可以帮助程序员解答开发过程中遇到的问题 但是 Ask CodeGeeX 的能力不止于此 用它还能帮助程序员高效编写测试用例 添加代码调试信息 实现SQL语句等等 如果你还不知道如何
  • 求三角形重心 包括凹多边形的模板

    求多边形重心的题目大致有这么几种 1 质量集中在顶点上 n个顶点坐标为 xi yi 质量为mi 则重心 X xi mi mi Y yi mi mi 特殊地 若每个点的质量相同 则 X xi n Y yi n 2 质量分布均匀 这个题就是这一
  • [PyQt] 在QLabel上用drawText实现文字滚动

    from PyQt4 QtGui import from PyQt4 QtCore import try fromUtf8 QString fromUtf8 except AttributeError def fromUtf8 s retu
  • 毕业设计-基于协同过滤推荐算法的视频推荐系统

    目录 前言 课题背景和意义 实现技术思路 一 关键技术分析 二 系统建模 三 结果分析 四 总结及展望 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精
  • Python之列表(list)基础知识点

    文章目录 1 创建列表 1 1 使用基本语法 创建 1 2 基于list 创建 1 3 range 创建整数列表 1 4 推导式生成列表 2 增加元素 2 1 append 方法 2 2 列表相加 2 3 extend 方法 2 4 ins
  • 共享本地文件夹

    ps 需要传输比较大的文件夹时 可以使用此方法 访问本地地址 直接进行下载 1 需要访问的那台电脑需要先安转node js https nodejs org en 2 进入终端安装本地服务http server 运行指令 npm insta
  • 自动驾驶汽车运动规划技术回顾——PDF版本

    英文 A Review of Motion Planning Techniques for Automated Vehicless 中文 自动驾驶汽车运动规划技术回顾 Chinese Gonz lez D P rez J Milan s V
  • 解决文字和elementUI中的进度条progress组件不能在同一行的问题

    我们使用span标签包裹一段文字 想要和elementUI中的progress组件显示在同一行 效果如下 span是一个行元素 progress是一个块元素 起初我是使用弹性盒布局 display flex 想让他们显示在一行 但是使用弹性
  • df查询命令用法区别。df -ih与df -lh

    今天磁盘显示没有可用空间了 google后记录一下 本人是菜鸟一枚 搞不清楚 i 与 h的区别 幸好文章地址http www 111cn net sys CentOS 86335 htm 截图如下 经过对比发现假如执行df lh命令发现磁盘
  • 基于ADRC的FOC位置环控制

    ADRC位置环控制 ADRC介绍 1 非线性跟踪微分器 2 非线性ESO观测器 3 非线性状态误差反馈控制律原理 NLSEF 4 调参流程 1 调TD 2 调ESO 3 调NLSEF 5 基于ADRC的位置环设计 ADRC框图 基于ADRC
  • PKG_CHECK_MODULES未定义

    一直以来 对于使用automake有点害怕 网上的大多资料都是说明autoconf生成什么文件 automake又做什么事情 还有autoscan等等 笔者在使用开源项目过程中遇到了一个问题 PKG CHECK MODULES未定义 奇怪