pkg-config 是 linux 上通过 .pc 文件自动获取库编译链接参数的工具;支持检查存在性、版本验证、提取头文件与库路径,并可配置 pkg_config_path 适配非标准安装路径。

pkg-config 是 Linux 上管理库依赖的核心工具,它不直接安装库,而是读取库自带的 .pc 文件,帮你自动拿到编译和链接所需的全部参数。用对了,不用再手动翻 /usr/include 或 /usr/lib 找路径。
查库是否存在和版本
这是日常第一步,避免编译时报“找不到头文件”或“链接失败”:
-
pkg-config --exists glib-2.0:静默检查,返回 0 表示已安装(无输出);非 0 表示缺失 -
pkg-config --exists --print-errors gtk+-3.0:缺失时会明确提示缺哪个.pc文件,比如 Ubuntu 下常需装libgtk-3-dev -
pkg-config --modversion openssl:直接打印已安装版本,如3.0.13 -
pkg-config --atleast-version=2.68 libpng:脚本中常用,满足条件返回 0,可配合&&或if判断
获取编译和链接参数
把 --cflags 和 --libs 的输出喂给 gcc,是最典型用法:
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
-
pkg-config --cflags glib-2.0:输出类似-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -
pkg-config --libs gtk+-3.0:输出类似-lgtk-3 -lgdk-3 -lpangocairo-1.0 -lcairo(自动包含依赖库) - 合起来用:
gcc test.c $(pkg-config --cflags --libs glib-2.0) -o test(注意是$(),不是单引号) - 只取头文件路径:
pkg-config --cflags-only-I json-glib-1.0;只取库名:pkg-config --libs-only-l gobject-2.0
处理非标准安装路径
自己编译安装的库(如装到 /usr/local 或 /opt/mylib),默认搜不到 .pc 文件:
- 临时指定:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config --libs mylib - 永久生效:在
~/.bashrc中加一行export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH,然后source ~/.bashrc - 多个路径用冒号分隔,例如
/opt/foo/lib/pkgconfig:/usr/local/lib/pkgconfig
排查和调试技巧
遇到 Package xxx not found 不要急着重装,先确认几个关键点:
- 运行
pkg-config --list-all | grep -i gtk看名字是否拼写准确(如gtk+-3.0不是gtk3) - 检查
.pc文件是否存在:find /usr -name "glib-2.0.pc" 2>/dev/null - 查看某个库的完整信息:
pkg-config --debug --exists glib-2.0,会显示所有搜索路径和匹配过程 - 查看库依赖关系:
pkg-config --print-requires glib-2.0,了解它还依赖哪些其他库









