pkg-config
的作用是列出系统中库的基本信息,例如,查询pcre
库的相关信息:
$ pkg-config --libs libpcre2-8
-L/usr/local/pcre2-10.31/lib -lpcre2-8
常用选项为:
--list-all
:列出所有已安装的共享库。--cflags
:列出指定共享库的预处理和编译flag。--libs
:列出指定共享库的链接flag。
$ pkg-config --list-all # 列出所有的库地址
lua5.1-rrd Lua rrd - Lua rrd engine
tic tic - ncurses 6.0 add-on library
lua51-c++ Lua - Lua language engine
lua5.1-bitop Lua bitop - Lua bitop engine
ncurses ncurses - ncurses 6.0 library
lua5.2-bitop Lua bitop - Lua bitop engine
menu menu - ncurses 6.0 add-on library
python-3.5m Python - Python library
systemd systemd - systemd System and Service Manager
...
$ pkg-config --cflags --libs libpcre2-8 # 找出pcre库相关的文件信息
-I/usr/local/pcre2-10.31/include -L/usr/local/pcre2-10.31/lib -lpcre2-8
原理
和系统的环境变量PATH
一样,pkg-config
的也有一个环境变量PKG_CONFIG_PATH
用于表示库文件的查询路径,不过和PATH
不一样的是,pkg-config
中的路径并不直接是库的路径,而是库安装完后的.pc
文件的路径。
一个系统库安装完成之后会生成*.pc
文件,位于库安装目录下的lib/pkgconfig
下,例如pcre
库:
$ tree /usr/local/pcre/lib/
/usr/local/pcre/lib/
├── libpcre2-8.a
├── libpcre2-8.la
├── libpcre2-8.so -> libpcre2-8.so.0.7.0
├── libpcre2-8.so.0 -> libpcre2-8.so.0.7.0
├── libpcre2-8.so.0.7.0
├── libpcre2-posix.a
├── libpcre2-posix.la
├── libpcre2-posix.so -> libpcre2-posix.so.2.0.0
├── libpcre2-posix.so.2 -> libpcre2-posix.so.2.0.0
├── libpcre2-posix.so.2.0.0
└── pkgconfig # pc文件路径
├── libpcre2-8.pc
└── libpcre2-posix.pc
1 directory, 12 files
把*pc
的路径加到PKG_CONFIG_PATH
即可:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PCRE_HOME/lib/pkgconfig
此处评论已关闭