运行供不同架构的程序时,我已经看到了这个问题,虽然建筑本身是不完全的问题。
例子:
我这个旧的二进制从1997年CB区游逛(不要问为什么。):
$ ls -Flas cbzone.exec
60 -rwxr-xr-x 1 erlkonig dialout 59236 Sep 15 1997 cbzone.exec*
当我运行它 - 即使它显然有:
$ ./cbzone.exec
bash: ./cbzone.exec: No such file or directory
跟踪它不照明:
$ strace -f ./cbzone.exec
execve("./cbzone.exec", ["./cbzone.exec"], [/* 107 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit_group(1) = ?
+++ exited with 1 +++
但是,我是一个x86_64的主机上,并将该软件是为32位,这样的东西可能是丢失:
$ file ./cbzone.exec
./cbzone.exec: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
LDD 不为大多数报告中的有效存储库支持 - 不是全部 - 该库的需要。一个更有用的提示是埋在这个输出:
$ readelf -a ./cbzone.exec
...
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x08048034 0x08048034 0x000a0 0x000a0 R E 0x4
INTERP 0x0000d4 0x080480d4 0x080480d4 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.1]
LOAD 0x000000 0x08048000 0x08048000 0x0c150 0x0c150 R E 0x1000
LOAD 0x00c150 0x08055150 0x08055150 0x0209c 0x02d3c RW 0x1000
DYNAMIC 0x00e12c 0x0805712c 0x0805712c 0x000c0 0x000c0 RW 0x4
....
嗯,“解释器”?
$ ls -Flas /lib/ld-linux.so.1
ls: cannot access /lib/ld-linux.so.1: No such file or directory
啊。所以我没有得到图书馆未发现的错误的原因是,它甚至没有得到那么多。它需要的第一件事是缺失。
看看这些帮助诊断臂无-Linux的gnueabi-gcc的问题。 :-)
是什么'LS /家庭/史尔皮/ ARM-2010Q1 /斌/ ARM-NONE-Linux的gnueabi-gcc'说?那么'file/home/shilpi/arm-2010q1/bin/arm-none-linux-gnueabi-gcc'? – 2014-09-02 18:10:45
检查您是否已经出口的路径,或者使用绝对路径 – 2014-09-02 18:13:51
尝试编译确实喜欢'臂-NONE-Linux的gnueabi-GCC --version'工作的简单的东西? – rkyser 2014-09-02 18:27:14