pkg-config命令的使用

pkg-config的用途:

大家应该都知道用第三方库,就少不了要使用到第三方的头文件和库文件。我们在编译、链接的时候,必须要指定这些头文件和库文件的位置。

        对于一个比较大第三方库,其头文件和库文件的数量是比较多的。如果我们一个个手动地写,那将是相当麻烦的。所以,pkg-config就应运而生了。pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。

*.pc文件的编写:

  首先要明确一点,因为pkg-config也只是一个命令,所以不是你安装了一个第三方的库,pkg-config就能知道第三方库的头文件和库文件所在的位置。pkg-config命令是通过查询XXX.pc文件而知道这些的。我们所需要做的是,写一个属于自己的库的.pc文件。

  如下展示hyperscan开源库中的libhs.pc文件的撰写:

 1 [root@localhost pkgconfig]# ls
 2 libhs.pc
 3 [root@localhost pkgconfig]# 
 4 [root@localhost pkgconfig]# 
 5 [root@localhost pkgconfig]# cat libhs.pc 
 6 prefix=/usr/local
 7 exec_prefix=/usr/local
 8 libdir=/usr/local/lib
 9 includedir=/usr/local/include
10 
11 Name: libhs
12 Description: Intel(R) Hyperscan Library
13 Version: 4.5.0
14 Libs: -L${libdir} -lhs
15 Libs.private:  -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
16 Cflags: -I${includedir}/hs
17 [root@localhost pkgconfig]# 

设置pkg-config的环境变量:

pkg-config又是如何找到所需的.pc文件呢?这就需要用到一个环境变量PKG_CONFIG_PATH了。这环境变量写明.pc文件的路径,pkg-config命令会读取这个环境变量的内容,这样就知道pc文件了。

1 export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig

将环境变量增加到.bashrc脚本文件中:

1 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
2 export PKG_CONFIG_PATH
3 source .bashrc

pkg-config的查询结果:

1 [root@localhost pkgconfig]# pkg-config --cflags --libs libhs
2 -I/usr/local/include/hs  -L/usr/local/lib -lhs  
3 [root@localhost pkgconfig]# 

在脚本和编译的命令行中使用pkg-config的查询结果:

1 [root@localhost examples]# g++ -o simplegrep simplegrep.c $(pkg-config --cflags --libs libhs)     
2 [root@localhost examples]# 
3 [root@localhost examples]# echo $(pkg-config --cflags --libs libhs)
4 -I/usr/local/include/hs -L/usr/local/lib -lhs
5 [root@localhost examples]# ls
6 CMakeFiles           CMakeLists.txt  patbench.cc  README.md   simplegrep.c
7 cmake_install.cmake  Makefile        pcapscan.cc  simplegrep
8 [root@localhost examples]# 

pkg-config官网下载地址如下,需要手动进行安装。

https://www.freedesktop.org/wiki/Software/pkg-config/

猜你喜欢

转载自www.cnblogs.com/alog9/p/12063373.html
今日推荐