pkg-config的作用

什么是 pkg-config

pkg-config 是一个 linux 软件包,用于帮助开发人员查找、定位和使用依赖库。它可以简化软件的构建过程。(比如 sharp 依赖 libvips

例如:当开发人员编写一个软件,且需要使用某个依赖库时,他们就可以使用 pkg-config 工具来查找该库的安装位置,并获取其编译和链接需要的参数。从而确保软件可以正确地链接和运行所需的依赖库。

pkg-config 的安装使用

Termux 中,使用 pkg install pkg-config 命令来安装 pkg-config

开发人员可以通过在命令行中运行 pkg-config --cflags <library> 来获取编译参数,通过运行 pkg-config --libs <library> 来获取链接参数。这些参数可以直接应用到编译和链接命令中,以确保程序可以正确地使用所需的依赖库。

pkg-config 的原理是通过读取依赖库对应的 pc 文件来输出结果的。比如你的 libssl 安装在 /usr/lib 下,那么生成的 pc 文件就是 /usr/lib/pkgconfig 下的 libssl.pc 文件。文件中定义了这个依赖库的名称、版本号、在当前环境的目录前缀、编译选项等等。pkg-config 的输出就是来自该文件。

默认情况下 pkg-config 的查找路径为 /usr/lib/pkgconfig/usr/share/pkgconfig,可以通过环境变量 PKG_CONFIG_PATH 在额外指定 pkg-config的查找路径。

有的时候,当我们在编译源码 configure 过程中时,可能遇到依赖库明明已安装而 pkg-config 却提示找不到依赖库的情况,此时可以尝试修改环境变量 PKG_CONFIG_PATH,将库的安装路径添加到 pkg-config 搜索路径中便可解决问题。(或者修改系统动态链接库搜索路径 LD_LIBRARY_PATH

1
2
3
4
5
6
7
8
9
10
11
prefix=/data/data/com.termux/files/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: OpenSSL-libssl
Description: Secure Sockets Layer and cryptography libraries
Version: 3.1.4
Requires.private: libcrypto
Libs: -L${libdir} -lssl
Cflags: -I${includedir}

参考资料
pkg-config
源码包的安装与pkg-config
XUbuntu22.04之安装pkg-config


pkg-config的作用
https://blog.itfox.net/posts/pkg-config的作用.html
作者
blog.itfox.net
发布于
2023年3月6日
许可协议