当前位置: 首页 > 工具软件 > Pkg > 使用案例 >

关于pkg-config

上官恩
2023-12-01

pkg-config提供了下面几个功能:

  • 检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。
  • 获得编译预处理参数,如宏定义,头文件的位置。
  • 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。
  • 自动加入所依赖的其它库的设置。

这一切都自动的,库文件安装在哪里都没关系!
为了让pkg-config可以得到这些信息,要求库的提供者,提供一个.pc文件。比如libffi-3.4.2的pc文件内容如下:

zys@zys-virtual-machine:~/work/tool/libffi-3.4.2/ffi-arm-install/lib/pkgconfig$ cat libffi-arm.pc
prefix=/home/zys/work/tool/libffi-3.4.2/ffi-arm-install
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
toolexeclibdir=${libdir}/../lib
includedir=${prefix}/include

Name: libffi
Description: Library supporting Foreign Function Interfaces
Version: 3.4.2
Libs: -L${toolexeclibdir} -lffi
Cflags: -I${includedir}

这个文件一般放在 /usr/lib/pkgconfig/ 或者 /usr/local/lib/pkgconfig/ 里,当然也可以放在其它任何地方。
为了让pkgconfig可以找到你的pc文件,你要把pc文件所在的路径,设置在环境变量 PKG_CONFIG_PATH 里。

使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项。例如,假设一个 sample.c 的程序用到了 Glib 库,就可以这样编译:
–cflags 可以给出编译时需要的选项
–libs 可以给出链接时的选项

$ gcc sample.c -o sample `pkg-config --cflags --libs glib-2.0`
 类似资料: