有关pkg-config的整理(给自己参考,写的较乱)

大致介绍

pkg-config用来检索系统中安装库文件的信息,典型的是用作库的编译和连接。一般来说,如果库的头文件不在/usr/include目录中,那么在编译的时候需要用-I参数指定其路径。
由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用-I参数指定的头文件的路径和在连接时使用-L参数指定lib库的路径都可能不同,其结果就是造成了编译命令界面的不统一。可能由于编译,连接的不一致,造成同一份程序从一台机器copy到另一台机器时就可能会出现问题。

pkg-config 就是用来解决编译连接界面不统一问题的一个工具。基本思想:pkg-config是通过库提供的一个.pc文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。需要的时候可以通过pkg-config提供的参数(–cflags, –libs),将所需信息提取出来供编译和连接使用。这样,不管库文件安装在哪,通过库对应的.pc文件就可以准确定位,可以使用相同的编译和连接命令,使得编译和连接界面统一。

gcw:上述两段话是否可以理解成-I,-L没有pkg-config也可以用,pkg-config是用来获取相应它们,也就是头文件和库文件的路径地址

它提供的主要功能有:

检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
获得编译预处理参数,如宏定义,头文件的路径。
获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
自动加入所依赖的其他库的设置。

在默认情况下,每个支持 pkg-config 的库对应的.pc文件在安装后都位于安装目录中的lib/pkgconfig目录下

gcw:opencv3.4.11安装完成后会在/usr/local/lib/pkgconfig下有一个opencv.pc文件件,/usr/local/lib/pkgconfig同样也是pkg-config的默认搜索路径,后续我会将默认搜索路径都列出来

新软件一般都会安装pc文件,没有可以自己创建,并且设置环境变量PKG_CONFIG_PATH来添加一个路径寻找自己编写的.pc文件。亦或者这个.pc文件并没有放在默认所搜路径,我们同样要将这个.pc文件的路径添加到环境变量PKG_CONFIG_PATH当中,以供所搜。一般是先在默认搜索路径搜.pc文件,没有再在PKG_CONFIG_PATH里搜

使用pkg-config工具提取库的编译和连接参数有两个基本的前提:

库本身在安装的时候必须提供一个相应的.pc文件。不这样做的库说明不支持pkg-config工具的使用。
pkg-config必须知道要到哪里去寻找此.pc 文件。

实际操作

首先给出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

可以发现上文提到的/usr/local/lib/pkgconfig也在其中。查阅其他文章的时候会发现,它们往往会把/usr/local/lib/pkgconfig添加到PKG_CONFIG_PATH,其实是没有必要的,因为默认的所搜路径已经有了,就没必要添加了。

然后我们通过相应的指令就可以得到库的头文件和库文件所在路径了

pkg-config opencv --cflags

得到头文件的路径,它们都是从opencv.pc文件获取的

-I/usr/local/include/opencv -I/usr/local/include

在这里插入图片描述
库文件路径同理

pkg-config opencv --libs 

在这里插入图片描述
可以看到这里给出了路的路径,还给出了有哪些库

然后我们可以再qt creator 的pro文件中写入这些库,并进行编译
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值