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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM