pkg-config 命令介绍

configure脚本在检查相应依赖环境时,通常会通过pkg-config的工具来检测相应依赖环境。

pkg-config 命令
$pkg-config –list-all
$pkg-config --cflags
$pkg-config --libs

环境变量: PKG_CONFIG_PATH
环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的,pkg-config --list-all也会沿此路径搜索.

我设定了自己的PKG_CONFIG_PATH, 如下:

$ echo $PKG_CONFIG_PATH
/opt/ffmpeg_build/lib/pkgconfig:/opt/Qt5.14.0/5.14.0/gcc_64/lib/pkgconfig

附实例及跟踪解释
对于系统库(非lib开头),它们会搜索系统目录下的pkgconfig, 例如
$pkg-config --libs x264
它的输出是:
-lx264

其执行过程是从下面4个目录(系统目录)查找
openat(AT_FDCWD, "/usr/local/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
openat(AT_FDCWD, "/usr/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
openat(AT_FDCWD, "/usr/share/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3

这4个目录在我的机器上有如下信息:
4431  getdents64(3, /* 8 entries */, 32768) = 256
4431  getdents64(3, /* 166 entries */, 32768) = 5704
4431  getdents64(3, /* 5 entries */, 32768) = 160
4431  getdents64(3, /* 45 entries */, 32768) = 1656
一个入口(项)占32个字节的意思吧.
它能够从中找到x264.pc的位置,进而确定其库的链接方法
4431  openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/pkgconfig/x264.pc", O_RDONLY) = 3
4431  write(1, "-lx264\n", 7)           = 7
以上信息用strace 得到.

对于非系统库,例如libavutil
$pkg-config --libs libavutil
它的输出是:
-L/opt/ffmpeg_build/lib -lavutil

它会优先从$PKG_CONFIG_PATH 中找,然后是系统级目录.
我机器上的PKG_CONFIG_PATH 在 .bashrc 中是如下定义的:
export PKG_CONFIG_PATH=/opt/ffmpeg_build/lib/pkgconfig:/opt/Qt5.14.0/5.14.0/gcc_64/lib/pkgconfig

strace 跟踪到如下信息:
openat(AT_FDCWD, "/opt/ffmpeg_build/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
getdents64(3, /* 10 entries */, 32768) = 360
openat(AT_FDCWD, "/opt/Qt5.14.0/5.14.0/gcc_64/lib/pkgconfig", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
getdents64(3, /* 60 entries */, 32768) = 2304
..... 这里是系统库查找过程,忽略之

在如下位置找到了libavutil.pc, 并确定了其库的使用方法
openat(AT_FDCWD, "/opt/ffmpeg_build/lib/pkgconfig/libavutil.pc", O_RDONLY) = 3
write(1, "-L/opt/ffmpeg_build/lib -lavutil"..., 33) = 33

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值