前情提要
假如我们通过源码安装的方式,安装一个动态库,风格往往是这样的:
# 克隆仓库
git clone https://github.com/xxx.git
# 进入仓库目录
cd xxx
编译
# ... 可能有一些校验代码完整性的sh命令
# 构建
mkdir build
cd build
cmake ..
# 编译
make -j$(nproc)
安装
sudo make install
卸载
sudo make uninstall
思考一个关键问题:
如何预先知道 sudo make install 会往系统中安装什么东西?比如 sudo make install 接下来可能破坏系统中的一些依赖关系,又或者出于其他安全考虑;如果是一名开发者,也不一定会将动态库安装到/usr/local/lib
这样的路径下,可能只是放在某个项目中,由 CMake 指定的规则进行构建。
一种办法是直接查看 makefile 文件,查找install
关键字。当然这不是一种好办法,makefile 可能是生成的,大型项目的 makefile 往往很复杂。
这里给出一种快速的方法,我们可以先创建一个临时文件夹,
mkdir ~/xxx_install
cd ~/xxx
# 指定安装位置
make DESTDIR=~/xxx_install install
make install 之后,我们可能获得如下结构
lib 中可以查看即将安装的库。