Loading

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 国际」许可协议进行许可。

posted @   eiSouthBoy  阅读(448)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu