por que o terminal não consegue encontrar meu executável

-1

Olá, tudo o que tenho experimentado com o make e o Ubuntu 14.04 para automatizar a compilação

eu criei 2 programas simples

test2.exe

test2.c

#include <stdio.h>

int main()
{
    printf("%s","Built using make");
    return 0;
}

e test.exe

main.c

extern int print();

int _start()
{
    print();
    return 0;
}

test.c

int print()
{
    printf("%s","Built using make");
    return 0;
}

Makefile

print:
    gcc -Wall test.c -c -o test.o
    gcc -Wall main.c -c -o main.o
    ld -o test.exe test.o main.o -lc    
test:
    gcc -Wall test2.c -o test2.exe

o problema que eu estou enfrentando é que o terminal não pode encontrar o test.exe com o comando ./test.exe , mas acha bem o test2.exe com ./test2.exe

o erro que me dá é bash: ./test.exe: No such file or directory

quando está claramente no diretório.

Estou chamando make print para criar o test.exe e fazer o teste para criar o test2.exe porque isso está acontecendo

edite em resposta aos comentários a saída de ls ld test.exe é

ls: cannot access ld: No such file or directory
ls: cannot access test.exe: No such file or directory

A saída de make print

gcc -Wall test.c -c -o test.o
gcc -Wall main.c -c -o main.o

ld -o test.exe teste.o principal.o -lc
Ant a saída de make test      gcc -Wall test.c -o test2.exe **

captura de tela do diretório

Capturadeteladasaídals

ls -q output

    
por ununpentium-299 02.10.2014 / 18:22

1 resposta

0

Quando você olha para a listagem de arquivos no Nautilus (ou executa ls sem argumentos), ele mostra um arquivo cujo nome aparece como test.exe .

Mas quando você passa test.exe como um argumento para ls , ele não o encontra e gera o erro:

ls: cannot access test.exe: No such file or directory

A explicação mais provável é que o nome do arquivo é exibido como test.exe , mas esse não é o nome dele.

Isso pode acontecer quando o nome do arquivo contém caracteres não imprimíveis . Você pode verificar essa hipótese executando ls -q . Se um arquivo com um ou mais ? for mostrado, cujo nome é semelhante a test.exe , isso confirma o problema. Caso contrário, o problema provavelmente tem outra causa.

Como você tem uma área de trabalho gráfica e o Nautilus exibe o arquivo, a maneira mais fácil de corrigir o problema é provavelmente renomeá-lo como test.exe no Nautilus.

Na janela do navegador de arquivos, clique com o botão direito do mouse no arquivo cujo nome parece ser test.exe . Clique em "Renomear ..." para editar o nome do arquivo. Pressione Ctrl + A para selecionar o nome inteiro, e pressione Apagar ou Backspace para apagá-lo. (Ou apenas comece a digitar o novo nome e ele irá sobrescrevê-lo.) Digite test.exe . Pressione Enter .

Em seguida, tente executar seu programa novamente.

Se isso resolveu o problema, surge imediatamente a questão de como um caractere não imprimível entrou no nome do arquivo. Como o nome do arquivo foi especificado em Makefile , talvez você colou ou inseriu acidentalmente entradas em seu editor de texto contendo um caractere de controle .

Você pode remover e substituir test.exe em Makefile para corrigir o problema.

Se renomear o arquivo no Nautilus não resolver o problema - ou se ls -q não mostrar nenhum caractere ? - edite sua pergunta para atualizá-lo com informações detalhadas sobre o que aconteceu e o trabalho sobre o problema pode continuar.

    
por Eliah Kagan 02.10.2014 / 20:02