admin 管理员组文章数量: 1086019
pkg
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
本文标签: pkg
版权声明:本文标题:pkg 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1700365320a415261.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论