对于可执行程序的动态库加载路径rpath(run path),我们可以通过工具来查看,也可以去修改,避免多次编译。

这里介绍两个Linux平台来查询和修改rpath的工具

1. chrpath(change run path)

一般系统不会此工具,需要自己安装,例如CentOS平台安装该工具的命令如下:

sudo yum install chrpath

查询rpath:

chrpath -l path/to/executable
或
readelf -d executable |grep RPATH

修改rpath:

chrpath -r "\$ORIGIN:\$ORIGIN/lib:\$ORIGIN/../lib" executable

-r后边跟的是路径,多个路径用冒号隔开,executable是可执行文件。

chrpath的更多用法可通过 chrpath --help 来查看。

注意:如果编译时没有指定rpath,那使用chrpath来改变rpath的值有可能会报错,此时可以使用下边的第二种工具。

2. patchelf

该工具系统一般也不会自带,需要自行安装,我是通过源码编译安装。

源码可从git上下载:https://github.com/NixOS/patchelf/archive/refs/tags/0.12.tar.gz

也可从我的资源中下载:https://download.csdn.net/download/u013992330/16792590

编译安装步骤:

wget https://github.com/NixOS/patchelf/archive/refs/tags/0.12.tar.gz
tar -xvf patchelf-0.12.tar.gz
cd patchelf-0.12
./bootstrap.sh
./configure
make
sudo make install

查询rpath:

# patchelf主要用来修改rpath,因此读取rpath还是得用readelf
readelf -d executable |grep RPATH

修改rpath:

patchelf --set-rpath "\$ORIGIN:\$ORIGIN/lib:\$ORIGIN/../lib" executable

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐