1

Я пытаюсь сделать простой скрипт, который скомпилирует test.cpp, но я не могу заставить его работать. Я запускаю скрипт так:

> bash make.sh

И получаю следующую ошибку:

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

Вот make.sh:

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

Я попробовал это без "./", и это все еще не работает. Я запускаю Cygwin на Windows 7 со всеми установленными пакетами (я могу скомпилировать и запустить из самой оболочки, но не из скрипта).

1 ответ1

2

Вы создали make.sh с помощью Блокнота?  Если это так, каждая строка заканчивается CR (возврат каретки) и LF (перевод строки).  Cygwin и его Unix-подобные программы не могут справиться с этим; Unix ожидает, что строки в текстовых файлах заканчиваются только LF (который Unix называет символом «новой строки»).  Отредактируйте файл с помощью редактора Cygwin (например, vi или vim) и исправьте его.  Если вы не можете этого сделать, попробуйте добавить « ; # »До конца каждой строки; это должно привести к тому, что bash будет рассматривать оскорбительные CR как комментарии.

Чтобы расширить вышесказанное: если моя теория верна, вторая строка make.sh выглядит так:

g++ -o ./test.out ./test.cpp CR

плюс LF который должен быть там (этот bash исключает из рассмотрения).  Итак, g++ ищет файл с именем « ./test.cpp CR », которого, конечно же, не существует.  Так и сказано:

./test.cpp CR : No such file or directory

Но из-за возврата каретки это приводит к тому, что : No such file or directory перезаписывают ./test.cpp , поэтому : No such file or directory - это не все, что вы видите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .