1

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

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

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

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

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

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

6 ответов6

3

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

2

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

cd "c:\Program files\internet explorer"

my2c

2

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

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

Это только тангенциально C++, но cd "c:\program files\internet explorer" .

0

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

0

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

Ваш c:\Program Files 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 доступно бесплатно).

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