File failed to load: https://cdn.bootcss.com/mathjax/2.7.5/extensions/MathZoom.js

linux下常见的环境变量对应的目录

  • ACLOCAL:在GNU automake套件中起作用。对应各个软件里的share/aclocal目录
  • PATH:可执行程序的目录。
  • PKG_CONFIG_PATH,作用见后文,对应软件里的lib/pkgconfigshare/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

posted @   砥安  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示