我有一个非常简单的ARM可执行文件,是使用arm-linux-gnueabi
工具链编译的。我可以使用qemu-arm
无任何问题地执行它:
$ qemu-arm -L /usr/arm-linux-gnueabi/ ./a.out
Hello world !
即使没有任何参数,运行链接器也可以工作:
qemu-arm /usr/arm-linux-gnueabi/lib/ld-linux.so.3
Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
You have invoked `ld.so', the helper program for shared library executables.
...
然而,如果我希望链接器运行我的可执行文件,情况如下:
$ qemu-arm -L /usr/arm-linux-gnueabi/ /usr/arm-linux-gnueabi/lib/ld-linux.so.3 a.out
a.out: error while loading shared libraries: a.out: cannot open shared object file
这里是 strace 的输出: https://pastebin.com/uJ7AhBdh
有什么想法,为什么会发生这种情况吗?
ldd a.out
的输出是什么?(在qemu中运行) - hek2mglldd
,但这里是readelf -d a.out
的输出:https://pastebin.com/G6TBxddi - ttk203libc.so.6
。 - hek2mglld --verbose | grep SEARCH_DIR | tr -s '; ' \\012
的输出吗? - hek2mgl