GNU Make не может найти Perl? - PullRequest
1 голос
/ 11 июня 2011

Иногда я получаю эту ошибку при компиляции программы:

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. Что происходит?

1 Ответ

1 голос
/ 12 июня 2011

Если это воспроизводимо, выполните команду make с strace -f, чтобы однозначно увидеть, какая команда пытается (и не удается) выполнить.

Я могу вспомнить из своего собственного опыта следующие две ситуациив котором exec -семейство может дать сбой в Linux с ENOENT, несмотря на то, что команда фактически существует:

  1. .interp, на который ссылается двоичный файл, отсутствует (пример:LSB-совместимый двоичный файл относится к /lib/ld-lsb.so.3 вместо обычного /lib/ld-linux.so.2, и пакеты совместимости с LSB не были установлены на компьютере с Linux).Кажется маловероятным в вашем сценарии:)
  2. Имеется какой-то нестандартный механизм безопасности на уровне ядра, который блокирует выполнение двоичного файла - особенно на заблокированных встроенных устройствах.Можно подумать, что EACCES будет более логичным в этом случае ошибкой, но, возможно, ENOENT используется для предотвращения утечки информации о существовании двоичных файлов в непривилегированные процессы.
...