【发布时间】:2019-02-21 08:42:53
【问题描述】:
我有一个使用arm-linux-gnueabi 工具链编译的非常简单的arm 可执行文件。我可以用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 中运行) -
我无法运行
ldd,但这是readelf -d a.out的输出:pastebin.com/G6TBxddi -
好像找不到
libc.so.6 -
你能把
ld --verbose | grep SEARCH_DIR | tr -s '; ' \\012的输出贴出来吗?