O motivo mais provável para esse erro é que check-dependencies.pl
não está no diretório em que o makefile procura. No entanto, se o arquivo check-dependencies.pl
existir em /home/minakshi/Desktop/working-dir/moses/scripts
, existe outra possibilidade: talvez seu carregador não exista.
- Para um script, o carregador é o interpretador mencionado na linha shebang , ou seja, a primeira linha , que deve começar com
#!
seguido pelo caminho para o intérprete. - Para um binário, o carregador é o vinculador dinâmico (os executáveis vinculados estaticamente não têm um carregador) - consulte Obtendo mensagem" Não encontrado "ao executar um binário de 32 bits em um sistema de 64 bits .
Quando o kernel é instruído a executar um programa, ele executa o programa do carregador e passa o executável ao carregamento. Se o loader não for encontrado, o kernel só pode reportar “not found”, ele não tem como distinguir “arquivo solicitado diretamente não encontrado” de “loader not found”. Às vezes, o shell de execução faz uma segunda verificação para exibir uma mensagem de erro mais explícita, mas às vezes você acaba com uma mensagem de aparência estranha que informa que um script ou um executável vinculado dinamicamente não foi encontrado ou não executável. arquivo existe e é executável, mas o erro se aplica ao seu carregador.
Com uma extensão .pl
, check-dependencies.pl
é presumivelmente um script Perl. Provavelmente começa com uma linha como #!/usr/local/bin/perl
, que não fornece o caminho para o interpretador perl em seu sistema. Edite o script e corrija a primeira linha; provavelmente você terá que substituir #!/usr/local/bin/perl
por #!/usr/bin/perl
ou vice-versa.
O Perl geralmente está localizado em /usr/bin
no Linux, mas em /usr/local/bin
em muitos outros unices. Existe uma maneira de escrever a linha shebang sem saber o caminho para o interpretador antecipadamente: #!/usr/bin/env perl
. A linha shebang requer um caminho absoluto; aqui o interpretador é env
, que procura perl
no $PATH
. No entanto, isso só funciona se não houver argumentos para passar para o interpretador: muitos sistemas, incluindo o Linux, aceitam um único argumento na linha de comando, portanto, por exemplo, #!/usr/bin/perl -T
funciona e #!/usr/bin/env perl
funciona, mas #!/usr/bin/env perl -T
falha porque tenta executar um programa chamado perl -T
.