meson和pkg-config

2023-05-16

最近再看simple-cam,它是用meson构建的。

有这样一句:

deps = [
      dependency('libevent-pthreads'),
]

执行编译时报错:

meson.build:16:0: ERROR: Dependency "libevent_pthreads" not found, tried pkgconfig and cmake

但实际上libevent_pthreads我已经用apt安装过了,但是为什么还找不到?

原因是meson使用pkg-config来查找依赖项:

Pkg-config is a way for shared libraries to declare the compiler flags needed to use them.

那么原因就是pkg-config没有找到libevent-pthread。

pkg-config是如何查找到各种library的?它通过一些.pc文件来查找。

首先,我们可以用pkg-config查看所有的安装包:

pkg-config --list-all

然后,用下面代码查看pkg-config执行时搜索的文件:

$ pkg-config --variable pc_path pkg-config
/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

在这些目录下添加自己编写的pc文件即可。

比如:

prefix=/usr/local
includedir=${prefix}/include
libdir=${prefix}/lib/x86_64-linux-gnu

Name: libcamera
Description: Complex Camera Support Library
Version: 0.0.0
Requires: libcamera-base
Libs: -L${libdir} -lcamera
Cflags: -I${includedir}/libcamera

其中,libdir是通过`dpkg -L`来看到的。我们看一下libevent_pthreads的情况:

$ dpkg -L libevent-pthreads-2.1-6
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.6.0.2
/usr/share
/usr/share/doc
/usr/share/doc/libevent-pthreads-2.1-6
/usr/share/doc/libevent-pthreads-2.1-6/copyright
/usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.6
/usr/share/doc/libevent-pthreads-2.1-6/changelog.Debian.gz

可以看出,没有头文件。看来不能用apt来安装它、必须用源码安装的方式。我们从libevent.org上下载libevent的源码,执行configure、make和sudo make install,可以看到:

Libraries have been installed in:
   /usr/local/lib

/usr/bin/install -c -m 644 libevent.pc libevent_core.pc libevent_extra.pc libevent_pthreads.pc libevent_openssl.pc '/usr/local/lib/pkgconfig'

查看/usr/local/lib/pkgconfig/libevent_pthreads.pc:

#libevent pkg-config source file

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libevent_pthreads
Description: libevent_pthreads adds pthreads-based threading support to libevent
Version: 2.1.12-stable
Requires: libevent
Conflicts:
Libs: -L${libdir} -levent_pthreads
Libs.private:  
Cflags: -I${includedir} -pthread

再执行pkg-config --list-all就可以看到libevent_pthread了。

然后执行meson build也可以顺利的找到libevent_pthread这个依赖项。

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

meson和pkg-config 的相关文章

随机推荐

  • Ubuntu18版本安装ROS

    最近不小心把虚拟机里的ROS弄坏了 xff0c 导致Linux都无法使用 也忘了快照导致所以软件重新安装 xff0c 在这里给大家分享一下ubuntu18版本如何安装ros以及我安装中出现的问题如何进行解决 注 xff1a 不同的ubunt
  • ER图

    1 某商业集团的销售管理系统 数据库中有三个实体集 xff0c 一是 商店 实体集 xff0c 属性有商店编号 商店名 地址等 xff1b 二是 商品 实体集 xff0c 属性有商品号 商品名 规格 单价等 xff1b 三是 职工 实体集
  • Tensorflow:EEG上CNN的一次实验

    一次失败的CNN实现 前言简介数据CNN网络 模型调整减少过拟合的尝试与全连接网络比较与SVM网络比较模型运用到其他分类标准结果分析代码CNN网络代码交叉验证代码FC网络代码SVM网络代码 前言 这是一次较为 失败 的分类器尝试 xff0c
  • MySql Error Code: 1046. No database selected Select

    初学者在建立表时容易遇到这样的报错 xff1a Error Code 1046 No database selected Select the default DB to be used by double clicking its nam
  • R语言自用笔记:复数

    复数在R语言中标示为z 61 x 43 iy 在R中虚数单位为i xff0c 如果是定值可以直接赋值 z1 61 1i print z1 1 0 43 1i z2 61 2 5i print z2 1 0 43 2 5i z3 61 1 4
  • [飞控]如何学习无人机-入门篇

    学什么 我把无人机分成3个大模块 操作 目的 xff1a 组装无人机 xff0c 享受驾驶无人机的乐趣 抱歉我给不了太多建议 xff0c 因为我从没有以此为目进行过学习 xff0c 但是我知道这一部分的知识关键词是 航模 xff0c 有非常
  • 说透互补滤波(1) - 线性互补滤波器从原理到实现

    为什么开源代码看不懂 xff1f 说起互补滤波 xff0c 之前非常的流行 xff0c 在那个算力不够的年代 xff0c 这种短小精干的融合算法 xff0c 风靡一时 原理也非常简单 xff1a 我有两路信号 xff0c 一个带有高频噪声
  • 飞控中的IIR二阶滤波器

    之前我们讲过一阶滤波器 xff0c 思路就是把一个连续的滤波器形式 xff0c 通过离散化的方式 xff0c 转换成差分方程 同事拿着我的文章 xff0c 对照着代码里的二阶滤波 xff0c 表示完全看不懂 xff0c 我说不可能 xff0
  • [源码解读]position_estimator_inav_main解读(如何启动光流)

    阅读工具 xff1a source insight 技术交流 xff1a zinghd 64 163 com xff0c 757012902 64 qq com 源码版本 xff1a Firmware xff08 原生固件 xff09 如有
  • [算法]px4位置估计-inav (2017/10/26更新)

    技术交流 xff1a zinghd 64 163 com 757012902 64 qq com 转载标明出处 xff0c 欢迎转载 xff0c 因为都是自己的想法 xff0c 不一定都是对的 xff0c 欢迎讨论 xff0c 哪有问题欢迎
  • [资料]Adams-matlab联合仿真

    刚才老师让把研一上学期做的四轴仿真图加几个图 xff0c 我发现突然忘了整么弄 xff0c 折腾了半个小时 xff0c 赶紧记下来 仿真的思路是 1 solidworks把飞机的硬件做出来 2 模型导入Adams中 xff0c 生成matl
  • [折腾日记]PX4编译环境各种解决方案(ubuntu)

    这篇博客可以解决 PX4编译环境的安装 强烈建议使用Ubuntu16 04的64位版本 xff01 方法1 xff1a 官方脚本 如果你是新装的Ubuntu还没有装软件 那么用官方脚本可以直接安装 官方提供了4个脚本 The scripts
  • ubuntu 12.04英文版设置成中文版

    适用于ubuntu 12 04英文版的系统 xff0c 其它版本的设置应该是大同小异的 进入ubuntu系统 xff0c 在顶部齿状标志找到system 2 在personal找到Language Support 3 进入Language
  • [资料]无人机资料大满足

    资料大汇总 xff0c 论文 xff0c 电子书 xff0c 博客 xff0c 网站看这一篇就够了 精选论文下载 Cubli 方盒机器人为何具有超级平衡能力 xff0c 技术难点是什么 xff1f 苏黎世联邦理工学院 xff08 ETH Z
  • [资料]《现代操作系统》《操作系统概念(操作系统恐龙书)》官方英文电子档

    准备学习一下操作系统 查了很多资料 xff0c 发现大神们统一推荐的两本好书 现代操作系统 Modern Operating Systems Global Edition 4th Edition xff0c 这本书是教材 xff0c Tan
  • [飞控][算法]APM姿态控制—加速度转倾斜角函数和四元数转轴角函数解析(修正)

    https zinghd gitee io blog accel to lean angles to axis angle
  • [飞控]从零开始建模(三)-控制分配浅析

    根据之前的文章 xff0c 我们的模型其实已经完成了 xff0c 模型的输入是四个电机的转速 xff0c 输出是我们需要的状态 位置 xff0c 速度 xff0c 加速度 xff0c 角加速度 xff0c 角速度 xff0c 角度 xff0
  • [飞控]姿态误差(三)-四元数和轴角求误差

    https zinghd gitee io Att err3
  • Matlab中的Smith 预估器

    Smith Predictor是针对时滞系统的 原理 xff1a 看Matlab help中的 34 Control of Processes with Long Dead Time The Smith Predictor 34 足矣 xf
  • meson和pkg-config

    最近再看simple cam xff0c 它是用meson构建的 有这样一句 xff1a deps 61 dependency 39 libevent pthreads 39 执行编译时报错 xff1a meson build 16 0 E