2023年12月14日发(作者:)

linux安装pkg文件,Linux的pkg-config命令

1. pkg-config介绍

pkg-config是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。pkg-config原本是设计用于Linux的,但现在在各个版

本的BSD、windows、Mac OS X和Solaris上都有着可用的版本。

它输出已安装的库的相关信息,包括:1. C/C++编译器需要的输入参数;2. 链接器需要的输入参数;3. 已安装软件包的版本信息。

当安装一个库时(例如从RPM,deb或其他二进制包管理系统),会包括一个后缀名为pc的文件,它会放入某个文件夹下(依赖于你的系统设

置)。例如,在Linux为该软件的库文件所在文件夹lib之下的子文件夹pkgconfig。把该子文件夹加入pkg-config的环境变量

PKG_CONFIG_PATH作为搜索路径,例如在bash配置文件中加入:

$ export PKG_CONFIG_PATH=/usr/local/库名字/lib/pkgconfig:$PKG_CONFIG_PATH

在这个.pc文件里包含有数个条目。这些条目通常包含用于其他使用这个库的程序编译时需要的库设置,以及头文件的位置,版本信息和一

个简介。以OpenCV为例,在Mac上pkgconfig目录所在的路径为:/usr/local/Cellar/opencv3/3.1.0_4/lib/pkgconfig/,目录下

的.pc文件为,其内容为:

# Package Information for pkg-config

prefix=/usr/local/Cellar/opencv3/3.1.0_4

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir_old=${prefix}/include/opencv

includedir_new=${prefix}/include

Name: OpenCV

Description: Open Source Computer Vision Library

Version: 3.1.0

Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -

lippicv -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -

lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core

e: -framework OpenCL -framework Cocoa -L/usr/local/opt/jpeg/lib -ljpeg -L/usr/local/lib -lwebp -lpng -ltiff -

lImath -lIlmImf -lIex -lHalf -lIlmThread -L/usr/lib -lz -framework QTKit -framework QuartzCore -framework AppKit

Cflags: -I${includedir_old} -I${includedir_new}

2. pkg-config的使用

在Linux/Mac系统下编写C、C++程序时,编译时需要包含头文件,链接时需要库文件,但安装一些第三方库之后不知道对应的include文

件和lib文件的位置,此时就需要pkg-config了。以opencv为例:

查看头文件位置

# 命令形式:pkg-config --cflags software_name

# demo

$ pkg-config --cflags opencv

-I/usr/local/Cellar/opencv3/3.1.0_4/include/opencv -I/usr/local/Cellar/opencv3/3.1.0_4/include

查看lib库的位置

# 命令形式:pkg-config --libs software_name# demo

$ pkg-config --libs opencv

-L/usr/local/Cellar/opencv3/3.1.0_4/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -

lopencv_videostab -lippicv -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -

lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core

编译程序,编译文件

文件内容为:

#include

#include

#include

#include

using namespace std;

using namespace cv;

int main()

{

Mat img = imread("./");

if(!)

{

return -1;

}

namedWindow("Lena", CV_WINDOW_AUTOSIZE);

imshow("Lena", img);

waitKey();

return 0;

}

编译,链接生成可执行程序DisplayImage:

$ g++ -o DisplayImage $(pkg-config --cflags --libs opencv)

运行结果:

Lena

参考资料: