0

我试图让我的可执行文件从它自己的目录加载一些共享库,所以我决定添加.到 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 环境变量(实际上它甚至不存在),其他库位于 /lib 文件夹中并且加载良好(但我不能放 libtoload.so.1)那里。我实际上是从另一台计算机交叉编译可执行文件,并且只能访问目标系统上的一些命令(没有工具链,主要是busybox命令)。

编辑: /lib/ld-linux.so.3 --library-path ./ ./myexec 有效

4

0 回答 0