Linux系统下CMake使用什么工具操作与修改二进制文件的RPATH?
Linux环境下CMake处理RPATH的核心工具
CMake处理二进制文件RPATH的逻辑分为两个阶段,对应使用的工具如下:
- 构建阶段:CMake在调用编译器链接生成二进制文件时,会直接向
gcc/g++等编译器传递-Wl,-rpath链接参数,直接将临时RPATH写入二进制,无需额外工具。 - 安装阶段:执行
make install等安装操作时,CMake会优先使用*chrpath工具修改二进制的RPATH,将构建时的临时路径替换为安装后的正式路径;若系统未安装chrpath,则会自动切换使用patchelf*完成修改操作。
对应依赖包安装方法
如果你当前缺少对应依赖,可根据自己的发行版执行对应安装命令:
- Debian/Ubuntu 系列:
# 优先安装chrpath,CMake默认优先调用该工具 sudo apt install chrpath # 可选安装patchelf作为备选 sudo apt install patchelf - RHEL/CentOS/Fedora 系列:
sudo dnf install chrpath sudo dnf install patchelf - Arch Linux 系列:
sudo pacman -S chrpath patchelf
若两个工具都未安装,CMake执行安装步骤时会跳过RPATH修改逻辑,可能导致安装后的程序无法找到对应动态库,启动时报动态链接错误。
内容的提问来源于stack exchange,提问作者Igor Mironchik
相关产品推荐
相关产品推荐

