Linux中的configure、pkg-config、pkg_config_path

简介:

  提到这三个名词我相信搞Linux的人一定不会陌生,重要性不言而喻,下面我就要总结下三者之间的关系。

configure一般都是一个脚本,执行时可以传入必要的参数告知配置项目。一般的开源软件,下载完源代码,解压后都会在解压后目录中找到configure文件,执行./configure文件就会生成Makefile文件,而configure脚本在检查相应环境时会通过pkg-config的工具来检测相应依赖环境。
pkg-config这一工具是用来检索系统中安装库文件的信息。其主要功能如下:
   1、检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息
,避免链接错误版本的库文件。
   2、获得编译预处理参数,如宏定义,头文件的位置。
   3、获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。
   4、自动加入所依赖的其它库的设置。
由于使用pkg-config工具来获得库的选项,所以不论库安装在什么目录下,都可以使用相同的编译和连接命令,带来了编译和连接界面的统一。但使用pkg-config工具提取库的编译和连接参数有两个基本的前提:
    1、库本身在安装的时候必须提供一个相应的.pc文件,如果没有.pc文件的软件则一般是不支持pkg-config工具的使用的。
    2、pkg-config必须知道要到哪里去寻找此.pc文件
 
pkg_config_path:环境变量PKG_CONFIG_PATH是用来设置.pc文件的搜索路径的,pkg-config按照设置路径的先后顺序进行搜索,直到找到指定的.pc 文件为止。这样,库的头文件的搜索路径的设置实际上就变成了对.pc文件搜索路径的设置。
 
下面就针对一个具体的情况来说明问题:在很多人编译GTK程序时都会出现说gtk.h文件找不到,之所以会出现这种问题就归咎于环境变量没有配置,我们通过上面的叙述,首先我们要做的就是找到其对应的.pc文件,在终端中输入pkg-config --modversion gtk+-2.0,提示找不到xproto.pc文件,需要把包含该文件的目录放到PKG_CONFIG_PATH里,搜索了一下,该文件在/usr/share/pkgconfig下,那么我们就改环境变量喽:export PKG_CONFIG=/usr/local/bin/pkg-config
export PKG_CONFIG_PATH=/usr/share/pkgconfig:/usr/lib/pkgconfig,好了,这样一切都OK了,
在我们编译对应程序时,输入的命令为gcc Demo.c -o Demo `pkg-config --cflags --libs --gtk+-2.0`
 
 
 
     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/946170,如需转载请自行联系原作者

相关文章
|
7月前
|
Linux 网络安全
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
348 1
|
6月前
|
Linux 编译器 C语言
Linux中的pkg-config:简化库依赖管理的利器
**pkg-config**是Linux下管理库依赖的工具,它通过读取库的`.pc`文件提供编译和链接参数。使用`pkg-config --cflags --libs <library>`获取编译和链接选项,例如`gcc -o test test.c $(pkg-config --cflags --libs glib-2.0)`。能进行版本检查、参数提取、依赖管理和路径搜索。列出所有包用`pkg-config --list-all`。最佳实践包括确保库正确安装、检查版本、配置`PKG_CONFIG_PATH`及使用构建工具。
|
7月前
|
Linux Shell C语言
linux下configure,make(makefile),cmake命令详解-makefile和CMakeList
linux下configure,make(makefile),cmake命令详解-makefile和CMakeList
|
7月前
|
算法 Unix Linux
【Linux 库管理工具】深入解析pkg-config与CMake的集成与应用
【Linux 库管理工具】深入解析pkg-config与CMake的集成与应用
641 0
linux 手动编译安装 pkg-config 步骤
linux 手动编译安装 pkg-config 步骤
|
Java iOS开发
Mac编译OpenJDK8:configure: error: Xcode 4 is required to build JDK 8, the version found was 10.1config
Mac编译OpenJDK8:configure: error: Xcode 4 is required to build JDK 8, the version found was 10.1config
140 0
configure: error: cups-config not found
configure: error: cups-config not found
112 0
|
Shell Linux 数据安全/隐私保护
Linux 用户与组管理详解(system-config-users && 命令行)
Linux 用户与组管理详解(system-config-users && 命令行)
432 0
Linux 用户与组管理详解(system-config-users && 命令行)
|
Linux
LINUX中,有的软件编译时configure的prefix参数无效
LINUX中,有的软件编译时configure的prefix参数无效
311 0