Linux Package 管理

2015-11-27 linux c/cpp

可以通过 pkg-config 命令来检索系统中安装库文件的信息,通常用于库的编译和连接。

如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径;同样,链接时可以通过 -L 参数指定库,这样就导致了编译命令界面的不统一。

为了保证统一,通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等,在需要的时候可以通过提供的参数,如 --cflags--libs,将所需信息提取出来供编译和连接使用。

主要包括了:A) 检查库的版本号;B) 获得编译预处理参数,如宏定义,头文件的路径;C) 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数;D) 自动加入所依赖的其他库的设置。

在 CentOS 中默认会保存在 /usr/lib64/pkgconfig/usr/share/pkgconfig 目录下。

----- 查看所有.pc
$ pkg-config --list-all

----- 编译
$ gcc -c `pkg-config --cflags glib-2.0` sample.c

----- 链接
$ gcc sample.o -o sample `pkg-config --libs glib-2.0`

----- 编译链接合并
$ gcc sample.c -o sample `pkg-config --cflags --libs glib-2.0`

另外,可以通过环境变量 PKG_CONFIG_PATH 指定搜索路径。