elf rpath not working (cannot open shared object file: No such file or directory)

0

I'm trying to get my executable to load some shared libraries from its own directory, so I decided to add . to the rpath. But when I try to run it, it doesn't find the .so. Here is the interested part of the result of 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/.:.]

My folder contains :

-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

The error :

/some/folder/ # ./myexec
./myexec: error while loading shared libraries: libtoload.so.1: cannot open shared object file: No such file or directory

Note : I don't have any access to the LD_LIBRARY_PATH env variable (in fact it doesn't even exist) and the other libraries are in the /lib folder and loaded fine (but I can't put libtoload.so.1) there. I am actually cross compiling the executable from another computer, and only have access to a few commands on the target system (no toolchain, mostly busybox commands).

EDIT: /lib/ld-linux.so.3 --library-path ./ ./myexec works

c
linux
shared-libraries
rpath
asked on Stack Overflow Apr 3, 2015 by Lectem • edited Apr 3, 2015 by Lectem

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0