ACLOCAL
:在GNU automake套件中起作用。对应各个软件里的share/aclocal
目录PATH
:可执行程序的目录。PKG_CONFIG_PATH
,作用见后文,对应软件里的lib/pkgconfig
或share/pkgconfig
目录LD_LIBRARY_PATH
:主要是用于指定动态链接器(ld)查找ELF可执行文件运行时所依赖的动态库(so)的路径。- 即用于在程序运行期间查找动态链接库时,指定除了系统默认路径(/usr/lib)之外的路径。对应
lib
目录 LIBRARY_PATH
:在程序编译期间查找动态链接库时指定的查找共享库的路径。指定gcc编译需要链接动态链接库的目录。
PKG-CONFIG
用来检索系统中安装库文件的信息。典型的是用作库的编译和连接。
一般来说,如果库的头文件不在/usr/include目录中,那么在编译的时候需要用-I
参数指定其路径。
由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,
所以即使使用同一个库,由于库的路径的不同,
造成了用-I
参数指定的头文件的路径和在连接时使用-L
参数指定lib库的路径都可能不同,
其结果就是造成了编译命令界面的不统一。可能由于编译,连接的不一致,
造成同一份程序从一台机器copy到另一台机器时就可能会出现问题。
PKG-CONFIG
就是用来解决编译连接界面不统一问题的一个工具。
它的基本思想:PKG-CONFIG
是通过库提供的一个.pc
文件获得库的各种必要信息,
包括版本信息、编译和连接需要的参数等。
需要的时候可以通过pkg-config提供的参数(–cflags, –libs),将所需信息提取出来供编译和连接使用。
这样,不管库文件安装在哪,通过库对应的.pc文件就可以准确定位,
可以使用相同的编译和连接命令,使得编译和连接界面统一。
它提供的主要功能有:
<1> 检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
<2> 获得编译预处理参数,如宏定义,头文件的路径。
<3> 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
<4> 自动加入所依赖的其他库的设置。
参考文献
【Linux】PKG_CONFIG_PATH: https://blog.csdn.net/qq_36182852/article/details/109680418
标签:环境变量,路径,目录,编译,PKG,linux,CONFIG,连接 From: https://www.cnblogs.com/mitnick/p/18433980