Estou tentando compilar o firmware para o meu Linksys WRVS4400N.
ls
mostra que existe, mas quando tenta executá-lo, o bash diz que não existe. Eu também posso cat
, e é um executável, não um shell script.
bash
arch-linux
Avery3R
fonte
fonte
Respostas:
Você mencionou que a saída de
file mkdep
é32-bit elf
. Você está executando uma VM de 64 bits.Exemplo:
Basta fazer uma nova VM de 32 bits e compilá-la lá.
fonte
Está definido para ser executável? Se não, então
chmod +x filename
. Está no seu CAMINHO? Se não, então chame-o como./filename
ao invés de apenasfilename
.fonte
Quando você tenta executar um arquivo e o bash diz que ele não existe, às vezes significa que o bash acredita que o arquivo é um script e que o intérprete especificado na primeira linha (#!) Não existe.
Se os arquivos forem nomeados,
mkdep
eu publicaria a saída deO comando strace fornece informações sobre as chamadas do sistema feitas, por exemplo,
strace ls 2>ls.t
coloca o seguinte em ls.tfonte
strace ./mkdep 2>mkdep.strace.txt
isso deve lhe dar uma idéia do que está acontecendo. Pode ser necessário instalar o strace a partir de repositórios.Você está alterando o IFS em seu script? Eu também encontrei o mesmo problema em um dos meus scripts e pensei o mesmo (arquivo de 32 bits sendo lido pelo script de shell na máquina de 64 bits). Mas esse não foi o problema no meu caso. Em vez disso, eu estava alterando o IFS para vírgula ',' e de volta à nova linha, que de alguma forma confundiu o analisador e causou esse erro.
Acabei de remover qualquer alteração no IFS e agora funciona muito bem !!!
fonte