我试图让我的可执行文件从其自己的目录加载一些共享库,所以我决定将.
添加到rpath。
但是当我尝试运行它时,它找不到.so。
以下是readelf -d myexec结果的感兴趣部分:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libtoload.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000f (RPATH) Library rpath: [$ORIGIN/.:.]
我的文件夹包含:
-rwxr-xr-x 1 root root 97148 Apr 3 12:10 libtoload.so.1
-rwxr-xr-x 1 root root 9873 Apr 3 10:10 myexec
错误:
/some/folder/ # ./myexec
./myexec: error while loading shared libraries: libtoload.so.1: cannot open shared object file: No such file or directory
注意:我无权访问LD_LIBRARY_PATH env变量(事实上它甚至不存在),而其他库都在/ lib文件夹中并且加载正常(但我可以&#39 ; t把libtoload.so.1)放在那里。我实际上是从另一台计算机上交叉编译可执行文件,只能访问目标系统上的一些命令(没有工具链,主要是busybox命令)。
编辑:/lib/ld-linux.so.3 - 图书馆路径./ ./myexec作品