编译程序时,我有时会遇到此错误:
make[1]: /usr/bin/perl: Command not found
make[1]: *** [links] Error 127
任何需要perl编译的程序都会发生这种情况,例如openssl和automake。但是:
sh-2.05b# perl -v
This is perl, v5.10.0 DEVEL34342 built for arm-linux-thread-multi
(with 1 registered patch, see perl -V for more detail)
sh-2.05b# /usr/bin/perl -v
This is perl, v5.10.0 DEVEL34342 built for arm-linux-thread-multi
(with 1 registered patch, see perl -V for more detail)
我绝对安装了perl。发生了什么事?
答案 0 :(得分:1)
如果这是可重现的,请使用make
运行strace -f
命令,以明确地看到哪个命令正在尝试(和失败)执行。
我可以从我自己的经验中回想起以下两种情况:exec
- 系列可能在Linux上使用ENOENT
失败,尽管该命令实际存在:
.interp
不存在(例如:与LSB兼容的二进制文件引用/lib/ld-lsb.so.3
而不是通常的/lib/ld-linux.so.2
,并且LSB兼容包没有已安装在Linux机器上)。在您的方案中似乎不太可能:)EACCES
将是更合乎逻辑的错误,但也许ENOENT
用于防止泄漏有关二进制文件存在于非特权进程的信息。