Criando um script bash para compilar / executar C ++

1

Estou tentando fazer um script simples que compilará o test.cpp, mas não consigo fazê-lo funcionar. Estou executando o script assim:

> bash make.sh

E recebendo o seguinte erro:

: No such file or directory
g++: no input files
make.sh: line 3: ./test.out: No such file or directory

Aqui está make.sh:

#!/bin/sh
g++ -o ./test.out ./test.cpp
./test.out

Eu tentei sem o "./" e ainda não funciona. Estou executando o Cygwin no Windows 7 com todos os pacotes apropriados instalados (posso compilar e executar a partir do próprio shell, mas não do script).

    
por Trent 31.05.2013 / 18:50

1 resposta

2

Você criou make.sh com o Bloco de Notas? Nesse caso, cada linha termina com CR (retorno de carro) e LF (avanço de linha). O Cygwin e seus programas semelhantes ao Unix não podem lidar com isso; O Unix espera que as linhas em arquivos de texto terminem com apenas LF (que o Unix chama de caractere de "nova linha"). Edite seu arquivo com um editor do Cygwin (por exemplo, vi ou vim ) e corrija-o. Se você não puder fazer isso, tente adicionar " ; # " ao final de cada linha; Isso deve fazer com que bash trate o CR s ofensivo como comentários.

Para expandir o acima: se minha teoria estiver correta, a segunda linha de make.sh se parece com:

g++ -o ./test.out ./test.cppCR

mais o LF que deveria estar lá (que bash exclui da consideração). Portanto, g++ está procurando por um arquivo cujo nome é " ./test.cpp CR ", o que, obviamente, não existe. Então diz:

./test.cppCR: No such file or directory

Mas, devido ao que é um retorno de carro, isso faz com que : No such file or directory sobrescreva o ./test.cpp , então : No such file or directory é tudo que você vê.

    
por 01.06.2013 / 03:23

Tags