You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I install retdec manually in docker on clean ubuntu 17.10. following steps in Dockerfile(except I am using /app/retdec as installation prefix) Everything works fine unless I (re)move build directory. When I run retdec-decompiler.sh or just retdec-fileinfo after that I get the following error: /app/retdec/bin/retdec-fileinfo: error while loading shared libraries: libretdec-libelf.so: cannot open shared object file: No such file or directory
This can help:
ldd /app/retdec/bin/retdec-fileinfo | grep retdec
libretdec-libdwarf.so => /app/retdec/bin/../lib/libretdec-libdwarf.so (0x00007f1e0261d000)
libretdec-libelf.so => not found
Thank you for the report. I was able to reproduce it on Ubuntu 17.10 (Artful Aardvark) inside Docker.
The reason why it does not work is that CMake on Ubuntu 17.10 sets RUNPATH when installing RetDec while on other systems, it sets RPATH. The difference between them is that RPATH has a global effect, i.e. it is used to find both direct and transitive dependencies, while RUNPATH is used only to find direct dependencies. For more information, see e.g. this post.
We will have to either set a proper RUNPATH when installing libretdec-dwarf.so (currently, it points to the build directory), or force the use of RPATH instead of RUNPATH (I would not recommend this; rather, we should try to set a proper RUNPATH when installing libretdec-dwarf.so).
Details: The above commit updates the used version of our libdwarf repository. This new version contains commit 85465d5, in which I have fixed the setting of runtime paths during installation. For libdwarf, we have to set the runtime path to $ORIGIN so it is able to find libelf, which is installed into the same directory as libdwarf.
I have verified the fix on Ubuntu 17.10 inside Docker. Current runtime paths:
I install retdec manually in docker on clean ubuntu 17.10. following steps in Dockerfile(except I am using /app/retdec as installation prefix) Everything works fine unless I (re)move build directory. When I run retdec-decompiler.sh or just retdec-fileinfo after that I get the following error:
/app/retdec/bin/retdec-fileinfo: error while loading shared libraries: libretdec-libelf.so: cannot open shared object file: No such file or directory
This can help:
And:
If I leave build dir in place:
Thank you for your work!
The text was updated successfully, but these errors were encountered: