pkg-config
一、pkg-config#
pkg-config是一个命令行工具,主要用于帮助开发者在编译依赖于特定库的软件时,自动获取和设置正确的编译器选项和链接器选项。它的主要作用在于简化编译过程,确保程序能够正确地找到所需的头文件和库文件,尤其是在库文件可能安装在非标准位置的情况下。
pkg-config版本查询:
有时候会看到诸如此类的编译命令:
gcc source.c -o source `pkg-config --libs --cflags glib-2.0`
那么
`pkg-config --libs --cflags glib-2.0`
得到的结果是什么呢?其结果又是如何得到的呢?这样做的好处是什么呢?
二、pkg-config已支持的库#
若用户安装了软件,则可以通过pkg-config查看:pkg-config --list-all
三、库的*.pc#
pkg-config查找对应库的*.pc文件,例如glib-2.0.pc。该文件内声明了头文件目录、库文件目录以及库名称。例如查看该文件的内容,验证下
/usr/lib/x86_64-linux-gnu/pkgconfig/glib-2.0.pc
prefix=/usr
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
bindir=${prefix}/bin
glib_genmarshal=${bindir}/glib-genmarshal
gobject_query=${bindir}/gobject-query
glib_mkenums=${bindir}/glib-mkenums
Name: GLib
Description: C Utility Library
Version: 2.64.6
Requires.private: libpcre >= 8.31
Libs: -L${libdir} -lglib-2.0
Libs.private: -pthread
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
查找glib-2.0库的头文件目录和库文件目录以及库名称:pkg-config --libs --cflags glib-2.0
头文件目录:-I/usr/include/glib-2.0
库文件目录:-I/usr/lib/x86_64-linux-gnu/glib-2.0/include
库名称:-lglib-2.0
回到最开始的问题,我们编译source.c文件需要使用glib-2.0库文件,使用这个库文件需要找对应的头文件目录和库文件目录,有两种方式可以找到。
- 第一种方式
通过这个dpkg -L 命令去找库的头文件目录和库文件目录:sudo dpkg -L libglib2.0-dev
- 第二种方式
通过pkg-config命令去查找,这种方法更加简单、方便。
作者:caojun97
出处:https://www.cnblogs.com/caojun97/p/18247182
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通