pkg-config到底是个啥

本文详细介绍了Pkg-config工具的功能及用途,它可以帮助开发者在编译过程中查找已安装库的接口,简化了链接库文件和头文件的过程。文章还提供了如何在Makefile和CMake中使用Pkg-config的方法,并附带了一个PC文件的编写示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pkg-config到底是个啥


😄

Pkgconfig其实跟使用的CMakeList文件中的配置文件作用是一样的,都是为了在需要使用第三方头文件或库文件的时候告诉编译器头文件和库文件的位置

百度百科的解释是

pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。

使用方法

gcc -o test test.c $(pkg-config --libs --cflags libpng)

当安装一个库的时候,会有一个.pc文件,通过pc文件就能知道所需要的头文件和库所在的位置。

其中cflags指定的是头文件

其中libs指定的是库文件

如何找到pc文件???

在linux系统下面,默认查找的路径是/usr/lib64/pkgconfig

当然可以手动指定,也就是通过设置PKG_CONFIG_PATH这个环境变量来进行指定路径下查找.pc文件

makefile中使用pkgconfig

在Cmake的文件中的时候可以使用FindPkgConfig进行查找pkg-config模块

PKGCONFIG(package includedir libdir linkflags cflags)

例如

PKGCONFIG(libart-2.0 LIBART_INCLUDE_DIR LIBART_LINK_DIR LIBART_LINK_FLAGS LIBART_CFLAGS) 

makefile书写规则

makefile使用

CFLAGS=-Wall -g -std=c++11 `pkg-config --cflags --libs opencv realsense2`

如何编写PC文件

prefix=/home/zhongsy/Downloads/Game/gaminganywhere/deps.posix
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: libavdevice
Description: FFmpeg device handling library
Version: 56.4.100
Requires: 
Requires.private: libavfilter >= 5.40.101, libswscale >= 3.1.101, libpostproc >= 53.3.100, libavformat >= 56.40.101, libavcodec >= 56.60.100, libswresample >= 1.2.101, libavutil >= 54.31.100
Conflicts:
Libs: -L${libdir}  -lavdevice 
Libs.private: -lXv -lX11 -lXext -lxcb -lxcb-shm -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lxcb-shape -lxcb -lX11 -lsndio -lasound -lxvidcore -L/home/zhongsy/Downloads/Game/gaminganywhere/deps.posix/lib -lx265 -lx264 -lvpx -lm -lvpx -lm -lvpx -lm -lvpx -lm -lvorbisenc -lvorbis -logg -ltheoraenc -ltheoradec -logg -lopus -lmp3lame -lm -llzma -lbz2 -lz -pthread
Cflags: -I${includedir}

pc文件中主要有的是一下几个变量

  1. Name 名称
  2. Description 描述
  3. version 版本
  4. cflags 所需要使用头文件的目录路径
  5. libs 所需要库文件的目录路径

参考

Cmake findpakage详解

Cmake教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值