pkg-config
的作用是列出系统中库的基本信息,例如,查询pcre
库的相关信息:
1 2 |
$ pkg-config --libs libpcre2-8 -L/usr/local/pcre2-10.31/lib -lpcre2-8 |
常用选项为:
--list-all
:列出所有已安装的共享库。--cflags
:列出指定共享库的预处理和编译flag。--libs
:列出指定共享库的链接flag。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ 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
库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ 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
即可:
1 |
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PCRE_HOME/lib/pkgconfig |
评论