Использование компилятора g ++ C ++ от cygwin - PullRequest
8 голосов
/ 02 марта 2009

Я пытаюсь выполнить свой первый "Hello World!" в C ++. Я использую Windows XP, и я установил Cygwin, в котором установлен компилятор g ++ C ++. Я написал небольшую программу hello-world и сохранил ее в hello.cpp. Из командной строки пишу:

g ++ hello.cpp

Но я получаю:

«g ++» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Я установил cygwin в моем D: \ Programs \ Cygwin. Я сделал еще один каталог с моим файлом hello-world в D: \ cpp. Что-то с моей установкой или моими путями, кажется, не в порядке, но я не могу понять, что. Я запустил exe-файл cygwin, и в каталоге установки у меня есть все необходимые файлы: папка bin, lib, Cygwin.bat и т. Д.

Я прочитал, что в случае такого сообщения об ошибке я должен проверить, скопирован ли файл cygwin1.dll в основную папку Windows. Это каталог C: \ WINDOWS? Я посмотрел там, и у меня нет такого файла там. У меня есть cygwin1.dll в папке bin cygwin: D: \ Programs \ cygwin \ bin. Кроме того, как я могу проверить, рассматривается ли папка bin (D: \ Programs \ cygwin \ bin) в пути поиска команд?

Я думаю, что программа hello-world не должна содержать никаких синтаксических ошибок, я только что скопировал ее. Кроме того, когда я пишу

g ++ -v

Я получаю то же сообщение об ошибке: команда не распознана. Я был бы признателен, если бы кто-нибудь дал мне подсказку, на что мне смотреть Спасибо.

Вот код программы hello-world:

#include <iostream>
using namespace std;

int main() {
  cout <<"Hello World!"<<endl;
  return 0;
}

Я установил g ++, и теперь, когда я набираю g ++ -v, я получаю: Чтение спецификации из: \ d \ cygnus \ cygwin-b20 \ H-i586-cygwin32 \ bin .. \ lib \ gcc-lib \ i586 -cygwin32 \ egcs-2.91.57 \ specs gcc версия egcs-2.91.57 19980901 (выпуск egcs-1.1)

В каталоге bin у меня есть и g ++. Exe, и gcc.exe. Я не понимаю, почему я получаю «gcc» выше, а не «g ++». Я не знаю, насколько это важно, но я получаю сообщение об ошибке при попытке скомпилировать программу в командной строке DOS:

g ++ hello.cpp

Я получаю:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)

И вот что я получаю, когда пытаюсь скомпилировать программу в оболочке cygwin:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files

Ответы [ 12 ]

3 голосов
/ 02 марта 2009

Как говорили люди, проверь путь. Не начинайте копировать библиотеки Cygwin DLL - это не обязательно, может привести к проблемам позже и не решит проблему.

И когда дело доходит до установки переменной Windows PATH (и других), я обнаружил, эта небольшая программа весьма полезна и лучше, чем щуриться в ответ на панель управления MS.

Редактировать: Похоже, что ОП по ошибке не установил g ++ - урок для всех нас, кто ответил, задавая очевидный вопрос первым: -)

3 голосов
/ 02 марта 2009

Ах, я думал, что g ++ установлен, когда я устанавливаю cygwin. Итак, я должен сначала установить g ++ в этом случае, не так ли?

(и затем перезагрузка)

2 голосов
/ 02 марта 2009

Вы уверены, что установили g ++? G ++ - это компилятор C ++, а не компилятор C. Если вы установили только компилятор C, у вас будет команда gcc , но не команда g ++

2 голосов
/ 02 марта 2009

убедитесь, что он находится по пути, или вы запускаете командную строку bash shell.

2 голосов
/ 02 марта 2009

Несколько лет назад я написал об этом учебник, который может помочь:

http://www.codeguru.com/cpp/misc/misc/compilerandpre-compiler/print.php/c8107__1/

Вы установили g ++? Он не устанавливается по умолчанию в установщике Cygwin.

2 голосов
/ 02 марта 2009

Я предполагаю, что вы используете оболочку Windows здесь. Если вы вызываете компилятор из оболочки cygwin Bash, все пути должны быть установлены для вас.

1 голос
/ 02 марта 2009

воспитывает дос оболочку.

cd c: \ cygwin \ bin

тип c ++ или cpp

или выполните команду справочника, посмотрите содержимое. Ищите cpp или c ++.

Если их там нет, вы его не загрузили.

1 голос
/ 02 марта 2009

Чтобы получить путь в Cygwin:

echo $PATH

Это поможет нам понять проблему.

Редактировать

Следующая команда сообщит нам, где Cygwin считает, что он должен искать все эти файлы в Windows

mount

Строка, которая включает / usr / bin, - это та, нам нужна копия.

1 голос
/ 02 марта 2009

Убедитесь, что c: \ cygwin \ bin находится в ПУТИ.

Надеюсь, это поможет.

0 голосов
/ 07 марта 2009

Попробуйте создать новый файл и ввести код самостоятельно, не копируя и не вставляя его. В вашем коде может быть недопустимый символ, который может не отображаться в выбранном вами редакторе.

...