Компилятор g ++: не может скомпилировать

1182

Это первый раз, когда я использую компилятор g ++ для компиляции своих программ на c ++. Я установил Cygwin G ++. и я пытаюсь запустить очень простую программу, чтобы отобразить «привет», чтобы увидеть, будет ли это работать.

Проблема в том, что любой путь, который я ввожу, я получаю сообщение об ошибке:

*-bash: cd: c:program: No such file or directory* 

Путь, который я набрал,

*$ cd c:\program files\internet explorer* 

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

1
Я рекомендую вам установить cygwin в C: \ Cygwin (или какой-либо другой каталог без пробелов). См. Http://cygwin.com/cygwin-ug-net/using.html#pathnames-win32 для получения информации о путях Windows 12 лет назад 2
Вместо этого, если вам на самом деле не нужен уровень совместимости с POSIX, я рекомендую вам использовать собственный компилятор Windows вместо использования CygWin (наиболее часто используются MinGW или VC ++). Matteo Italia 12 лет назад 0
сейчас работает ... :) ..... спасибо всем за помощь ...... 12 лет назад 0

6 ответов на вопрос

3
Some programmer dude

Это не имеет ничего общего с GCC или компилятором g ++. Проблема в том, что командная строка считает, что c: \ program files \ internet explorer - это на самом деле три аргумента: «c: \ program», «files \ internet» и «explorer». Вы должны поместить это в кавычки как этот "c: \ program files \ internet explorer" .

2
neuro

Вам нужно добавить «вокруг» вашего пути, так как он содержит пробелы:

cd "c:\Program files\internet explorer" 

my2c

но сейчас, когда я даю 12 лет назад 0
$ g ++ hello.cpp-o main Я получаю сообщение об ошибке g ++: hello.cpp-o: Нет такого файла или каталога g ++: main: Нет такого файла или каталога g ++: нет входных файлов 12 лет назад 0
Вы забыли пробел между `hello.cpp` и` -o`. Matteo Italia 12 лет назад 0
я использовал пробел ..... но я получил ту же ошибку 12 лет назад 0
попробуйте g ++ hello.cpp -o test.exe 12 лет назад 0
я пытался но ..... та же ошибка 12 лет назад 0
Вы уверены, что hello.cpp находится в текущем каталоге? И я не уверен, но могут ли имена файлов быть чувствительными к регистру? (Не могу проверить здесь, нет Cygwin) 12 лет назад 0
@amrithta: Отредактируйте свой вопрос (это так), и введите свои точные команды ... neuro 12 лет назад 0
2
Mithrandir

У вас есть место на вашем пути ...

cd "c:\program files\internet explorer" 
0
Mark B

Это только косвенно C ++, но cd "c:\program files\internet explorer".

0
mkb

bashиспользует обратную косую черту как escape-символы, аналогичные строковым литералам Си. Попробуйте, cd '/cygdrive/c/Program Files/Internet Explorer'так как bash также не совсем понимает буквы дисков и будет рассматривать пробелы в качестве разделителей аргументов без кавычек.

0
Matteo Italia

CygWin - это уровень эмуляции POSIX, поэтому в программах CygWin используются пути, подобные POSIX, в которых нет понятия букв дисков, но все находится под /иерархией. Короче говоря, для доступа к путям Windows вы должны обратиться к иерархии путей в /cygdrive/. (см. документацию CygWin )

Вы c:\Program files\Internet Explorerстанете /cygdrive/c/Program Files/Internet Explorer(естественно, вам придется добавлять кавычки, иначе bash будет интерпретировать пространство как разделитель аргументов).

Редактировать : по-видимому,cdкоманда делает это отображение самостоятельно; Тем не менее, следует помнить, что программы CygWin на самом деле будут видеть путь POSIX, а не путь Windows.

С другой стороны, я не понимаю, почему вы должны использовать CygWin, если вы программируете только на стандартном C ++: возможно, вам не нужен слой эмуляции POSIX, а собственный компилятор C ++ для Windows. Вы можете использовать, например, MinGW (порт gcc для Windows) или Visual C ++ (чья Express Edition доступна бесплатно).