最近项目涉及的系统需要修改底层,需要重编译。那么依赖的第三方库如果没有提供 SDK 相关文件(头文件、库信息等),则也需要重新编译。

这里就记录一些 Linux 常用的库(包)管理相关指令。

TIPS:Linux关于包的参数

PATH:可执行文件路径

LIBRARY_PATH:编译期间的动态库查找路径

LD_LIBRARY_PATH:程序加载运行期间的动态库查找路径

PKG_CONFIG_PATH:pkg-config库信息存储路径

一、update-altnernatives

这是用于管理多版本的应用,如:python、java、cmake 这些常需要多版本切换的库/应用。实际上,这个命令是通过软链接的机制,对应用采用注册记录的方式实现的。

如:python服务

/usr/bin/python

/etc/alternatives/python   →   /usr/bin/python2.7

/usr/bin/python3.5

这里只介绍一些基本用法:

  • display:参数显示关于 xxx 替换组的信息

  • config:选择版本

  • install:参数用于添加一个命令的 link 值

  • remove:参数用于删除一个命令的 link 值,其附带的 slave 也会一并删除

 

二、pkg-config

这是一个在源代码编译时常用于查询已安装的库的使用接口等信息的一种工具软件。

它输出已安装的库的相关信息:

  1. C/C++ 编译器所需的输入参数
  2. 链接器所需输入参数
  3. 已安装软件包的版本信息

当 install 一个库的时候(RPM、deb/其他二进制包),会包括一个后缀名为 pc 的文件,它会放入某文件夹下(依赖于当前系统设置),如 Linux 下的 /usr/lib/pkgconfig 和 /usr/local/lib/pkgconfig 中。

将文件中加入 pkg-config 环境变量 PKG_CONFIG_PATH 作为搜索路径,如在 ~/.bashrc 中加入:

在这个 .pc 文件里包含多个条目,这些条目通常包含 其他使用这个库的程序编译时所需的库信息 ,如:库信息(include、lib),版本信息,简介等。

例如: