Использование компилятора 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 ]

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

Как уже упоминали другие, это, вероятно, проблема пути, поэтому вам нужно взглянуть на переменную окружения PATH. Для этого щелкните правой кнопкой мыши на My Computer и выберите «Свойства». Перейдите на вкладку «Дополнительно» и нажмите кнопку «Переменные среды». Отсюда посмотрите, включены ли указанные вами пути в переменную PATH. Если нет, добавьте их, используя тот же синтаксис, который вы видите там, для разделения путей (я думаю, что это точка с запятой или двоеточие между путями.)

Редактировать: Ах, я вижу, что вы уже сделали это (побейте мой пост за несколько секунд.) Я думаю, все, что вам нужно сделать, это перезагрузить компьютер.

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

В дополнение к добавлению его в путь (который исправит вашу проблему), вы можете загрузить make и dbg, которые также находятся на пути разработки, но не отмечены по умолчанию. Убедитесь, что вы выбрали «сохранить» в качестве общих параметров установки, чтобы он не загружал все заново.

...