С++ для начинающих. MinGW. Командная строка. Работа из консоли Windows

Во время обучения C++ часто можно слышать про командную строку и видеть в литературе что-то наподобие этого:

C:\MinGW\bin\g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe

Для тех, кто работает в ОС Windows, понятие запуска из командной строки может быть в диковинку, потому что не очень понятно, что запускать именно. Ответ банален: нужно запускать интерпретатор командной строки.

  • В Windows для работы с командной строкой можно использовать файл CMD.EXE, который поставляетя с системой и лежит в каталоге system32. Полный путь к файлу может выглядеть так: C:\Windows\System32\cmd.exe

Для примера используется компилятор MinGW. Используемая операционная система Windows7.
Первым делом, компилятор MinGW нужно скачать из интернета. Весит он около 100МБ. Если вы зависимы от интернет-траффика, то берите в расчёт около 300МБ.
Скачиваем установщик MinGW c сайта mingw.org›Download/installer. Называется этот установщик mingw-get-setup.exe. Скачать установщик можно и с других сайтов, иногда бывает, что где-то есть версия компилятора новее последней официальной выложенной, но неофициальные версии не всегда хорошо. На момент написания статьи самая последняя версия, которую мне удалось найти, была нестабильной версией компилятора MinGW и была выложена на странице http://sourceforge.net/projects/mingw-w64/files/latest/download?source=files

Если разобрались, что и откуда качать, то после скачивания, разумеется, запускаем скачанный файл, в запустившейся программе жмём install.
В открывшемся окне можно указать свою директорию для скачивания в неё файлов установки. Для этого нужно нажать change. По умолчанию файлы скачиваются в корневой диск системы, в папку "MinGW" (чаще всего это C:\MinGW). Я прохожу весь процесс установки одновременно с написанием статьи, оставляю всё как есть, не меняю каталог, следовательно, у меня файлы скачаются в "C:\MinGW". После завершения скачивания файлов нужно нажать кнопку "continue", которая поможет продолжить установку компилятора.
Файлы будут скачиваться с серверов интернета. Если проблем не возникло и всё прошло гладко, то по завершению скачивания начинается процесс самой установки.
Такое окно свидетельствует об успешной загрузке файлов:

Рисунок главного окна программы установки компилятора MinGW:
http://ci-plus-plus-snachala.ru

Выбираем MinGW-32-gcc-g++, щелкнув по пустому квадрату, левее него, мышкой, после чего жмем на Mark for installation.
Нажимаем меню наверху: Installation -> Apply Change и в открывшемся окне жмем Apply.

http://ci-plus-plus-snachala.ru
Должна начаться загрузка, ждем окончания.

По окончанию загрузки нужно закрыть диалоговое окно, в котором первая запись гласит, что все изменения успешно применены: All changees were applied succefully; you may now close this dialogue. Смело жмем close.
Если всё прошло гладко, то квадрат, который мы недавно выбирали, будет отмечен, а в колонке Installed Version укажется версия установленного компилятора .

Если вы хотя бы немного знаете английский язык, то с установкой у вас будет намного меньше проблем, чем в случае, если английского языка вы совсем не знаете. Надеюсь того, что описано на этой странице, будет достаточно для понимания процесса самой установки.

Так как компилятор есть, то его можно использовать, с его помощью можно компилировать пишемые нами коды.
В операционной системе Windows есть такая штука, которая называется "Переменные окружения", если не знать, что это такое, то для использования компилятора придётся прописывать в командой строке полные пути. В книгах вы можете видеть способ компилирования g++, а нам, без дополнительной возни, придётся писать нечто похожее на C:\MinGW\bin\g++:

В книге:
g++C:\Hello.cpp-oHello.exe

У нас:
C:\MinGw\bin\g++\Hello.cpp -o \MyPrograms\cpp\Hello.exe

В общем, нужно писать полные пути. Такая делема в Windows решается путём добавления путей к компилятору в переменную окружения PATH. После добавления путей в PATH можно спокойно компилировать программы, используя простое название компилятора: g++

Если у Вас нет исходного кода, то, разумеется, его нужно написать и где-то сохранить. Сохранить лучше таким образом, чтобы прописывание пути к сохранённому файлу было как можно понятнее. Лучше всего, если весь путь не содержит русских символов, а содержит только символы латинского алфавита, к тому же хорошо, если путь не содержт пробелов.

Основная часть команды компиляции, которую нам, новичкам, легче всего понять, состоит из трёх частей: указание компилятора, указание входного файла для сборки и указание куда и как сохранить сделанный файл:
  • C:\MinGW\bin\g++ C:\C++\HelloWorld\Hello.cpp C:\C++\HelloWorld\Hello.exe
Выделенное белым цветом и есть указание компилятора, которым мы собрались компилировать код.
В Windows можно и желательно сделать так, чтобы не приходилось постоянно указывать весь путь к компилятору, а было можно указывать только сам компилятор, чтобы в командной строке срабатывали коды, подобные:

  • g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe
Для этого используют системные переменные Windows (переменные окружения).

Переходим к интересующей нас части, к работе с компилятором из командной строки Windows.

Первое, что нужно сделать — добавить переменную окружения. См. картинки.
http://ci-plus-plus-snachala.ru
http://ci-plus-plus-snachala.ru
http://ci-plus-plus-snachala.ru
http://ci-plus-plus-snachala.ru

Нужно в PATH дописать каталог C:\MinGW\bin (согласно пути, куда установлен MinGW), если там, в PATH, что-то написано, то дописывать через точку-запятую, как на картинке выше.

Для работы с командой строкой Windows обычно используется программа CMD.EXE, эту программу нужно запустить. Запустить её можно разными способами: комбинацией клавиш Win+R; Пуск -> Выполнить, ввести cmd, нажать Enter; запустить по прямому пути: C:\Windows\System32\cmd.exe (но быстрее клавишами). (Клавиша Win — это клавиша с рисунком логотипа Windows)

Выглядит консольное окно в Windows приблизительно так
http://ci-plus-plus-snachala.ru

Для компиляции исходного кода из командной строки готово почти всё. Давайте напишем нашу первую программу в обычном блокноте.
Я создам каталог C:\C++\HelloWorld, внутри которого создам текстовый документ , который сохраню как Hello.cpp.
Всё это создается обычными тырканиями вне консоли, т. к. пока геройствовать с консолью не особо нужно, хотя можно и из нее, просто сейчас незачем. Делается всё самым обычным, привычным и простым способом.

Содержимое текстового документа:

Надеюсь, создавать папки и текстовые документы умеют все. В идеале называния файлов и папок не должны содержать русских символов и пробелов, потому что с ними возможны проблемы. Привыкайте к именованию в латинской раскладке.
И вот приступаем к самой главной части, наконец заставляем компилятор превратить наш код, написанный в текстовом документе, в полноценную программу. Консольно окно должно быть открыто, что в нём написано нас мало интересует, не обращаем особого внимания, просто пишем

C:\MinGW\bin\g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe

Если вы дописывали пути в переменную PATH (о чём писалось чуть ранее), то вам можно писать короче:

g++ -o C:\C++\HelloWorld\Hello.exe

Если при добавлении путей в переменную PATH ошибок допущено не было, то короткая запись сработает. Написали указанную строчку, подтверждаем нажатием клавиши Enter, немного ждём, и программа готова! Готовая программа называется Hello.exe, лежит в C:\C++\HelloWorld\ (в чём легко убедиться, если зайти по этому пути и посмотреть, какие там файлы ).

Вот такие дела. Для ясности немного сокращаю всё описанное выше. Порядок действий при создании программы такой:

Вызов компилятора C:\MinGW\bin\g++
Указание компилятору, где лежит, что ему обрабатывать:
C:\C++\HelloWorld\Hello.cpp
Указание компилятору, куда сохранить то, что он сделает, и как ему это делать:
-o C:\C++\HelloWorld\Hello.exe

Разумеется, выходной файл можно записывать в любой существующий каталог (куда удобнее), не обязательно в папку с исходником.

Компилятор можно устанавливать разными способами, не только таким, который описан в статье. Одним из хороших альтернативных способов установки компилятора MinGW является использование специальной утилиты MSYS
В скачанном установщике можно выбрать msys-base (см. в колонку "package"). Весь процесс установки аналогичен уже написанному. Если хотите, можете поставить.

После установки MSYS вы должны найти файл msys.bat, который находится в C:\MinGW\msys\1.0. Нужно запускать этот файл. Когда программа запустится, останется писать команды.
Пишем команду компиляции:
g++ C:\\C++\\HelloWorld\\Hello.cpp -o C:\\C++\\HelloWorld\\Hello.exe
и жмём клавишу Enter для выполнения.
Утилита MSYS использует компилятор g++, в результате чего будет создан файл, сохранится он в C:/C++/HelloWorld (т. е. куда укажите, там и будет).
Несложно заметить, что различается в MSYS.BAT и CMD.EXE способ написания слешей. При работе с MSYS.BAT писать команды нужно при латинской раскладке клавиатуры, если раскладка русская, то будете слышать характерные гудки.

Такой вот получился материал. Теперь книги, в которых для компилирования используется командная строка, вам будут намного понятнее. Поэтому нечто вроде g++ Тра-ля-ля вас напугать не должно.
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

11 комментариев: С++ для начинающих. MinGW. Командная строка. Работа из консоли Windows

  • Аноним говорит:

    У меня выдаёт ошибку «ld returned 1 exit status» в MSYS. Помогите, что делать?

    Автор сайта отвечает:
    Я так не смогу помочь. Одна из возможных причин — диск защищен от записи. Например в Win7 диск C:\ часто защищен от записи и при попытке скомпилировать код на него, выходной файл не сможет создаться.

  • Дмитрий говорит:

    Спасибо Вам за этот материал! Это как раз то, что я искал. Объяснено всё очень доходчиво. В итоге у меня всё получилось!

  • Andrei говорит:

    Зачем  при компиляции указывать  полный  путь к g++ ? Ведь он уже есть в PATH.

    …>g++  C:\C++\HelloWorld\Hello.cpp   -o   C:\C++\HelloWorld\Hello.exe

    Автор сайта отвечает:
    Когда писал не думал об этом. Да, достаточно g++, если есть в PATH. Допишу это.

  • Irina712 говорит:

    При попытке ввести в командной строке:g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe
    (с пробелами)
    выходит ошибка g++: fatal error: no input files compilation terminated.

    А если ввести всю команду целиком без пробелов, выходит ошибка "Синтаксическая ошибка в имени файла, имени папки или метке тома".
    Так что же делать?

    Автор сайта отвечает:
    Похоже, что в прописывании пути допущена ошибка. Легко проверить. Войдите в каталог с файлом *.cpp. Скопируйте мышью путь к файлу и вставьте этот путь в командную строку после g++, затем допишите через слеш имя компилируемого файла. Во вторую часть команды тоже вставьте мышью путь и через слеш допишите название конечного файла. Нажмите Enter. Если скомпилируется, то все дело в неправильном написании пути к файлу. (Русские буквы, регистр не тот или еще какие-то свои причины).
    Наиболее вероятно, что при создании папок получилось назвать папку используя русские символы. рус (С) и анлгл (С) очень похожи, например.

    10.12.2015 в 3:45пп Irina712 говорит:
    Раскладка и написание корректны.
    Методом научного тыка выявлено, что программа компилируется, только если вместо пробелов поставить знак >
    Это для информации, может кому пригодится.

  • jjhgfu говорит:

    Возможные проблемы:
    1) Может не все файлы скачать с зеркала (у меня полный размер папки MinGW получился 238 МБ (250 530 318 байт)) (в первый раз скачало намного меньше файлов чем должно было, поэтому не работало). В зависимости от версии, размер может меняться, но не должен быть совсем маленьким.
    2) При компилировании, возможна всплывающая ошибка "….не найден zlib1.dll" – нужно скачать/проверить антивирусом и поместить его в C:\WINDOWS\system32

    • zlib1.dll. (Пароль внутри архива в описании).

    3) По завершении компиляции, возможно проверить программу прямо из командной строки. (из командной строки делается следующее: указывают путь к полученному после компиляции файлу программы и имя exe файла. Пример: C:\Documents and Settings\Admin>D:\cpp\pr2.exe).
    Все имена и пути надо прописывать на англ.яз.
    Пример: name.cpp
    Нужно, чтобы путь к программе не содержал русских букв, и в пути не было пробелов

    Пример (правильно) : D:\cpp\pr2.exe
    Пример (неправильно): D:\Program Files\Common Files\pr2.exe
    D:\Мои программы\пр2.exe
    D:\Программы\пр2.exe
    >

    Если у вас в программе имелась русскоязычная строка/строки, по выполнению программы можно увидеть "иероглифы".

    В этом случае, исходный код программы можно попробовать дополнить следующими строками:
    — перед функцией int main()

    Следующие три строки пишутся внутри функции int main(), т.е сразу после открывающейся фигурной скобки.

    Для устранения "иероглифов" обязательно сделать шрифт командной строки "Lucida Console", (точечные шрифты с русскими символами не дружат). Вот чтобы так поменять шрифт, необходимо:
    1) Найти расположение командной строки (cmd.exe), у меня это (C:\WINDOWS\system32)
    2) Создать ярлык командной строки (cmd.exe), зайти в его Свойства => Шрифт, далее установить "Размер 14" "Шрифт – Lucida Console". Вынести созданный ярлык с измененным для него шрифтом на рабочий стол и запускать командную строку через него (компиляцию/выполнение).

  • вовка говорит:

    Да спасибо всё сразу получилось, объяснения чёткие и подробные. Только вот что, я воспользовался Qt-товским , MinGW-веем и при запуске EXE файла он ругается и требует библиотеку libgcc_s_dw2-1.dll Это как, у меня MinGW недоукомплектован получается, не подскажете где мне искать эту библиотеку?

     

    • admin говорит:

      Не могу сказать про укомплектованность или недоукомплектованность.
      Для начала стоит поискать его в папке QT и в папке вцепленного в него компилятора. Если найдется, то в Windows добавить пути в системные переменные, а если не найдется, то гуглить этот файл. (То, что *.exe или телефонов для регистрации требуют, обязательно игнорировать).

  • вовка говорит:

    Может быть мне шаманить в папке Qt, ну в смысле сохранить cpp файл и затем компилировать. Если да то в какой именно папке, их там до фига.

  • вовка говорит:

    Заработало !!! Спасибо. Нашёл не достающие библиотеки в папке с бинариками, там где лежит сам MinCW-вей.

  • LoGoFiOS говорит:

    Спасибо за статью, помогло.

    Взял компилятор minGW, который с Qt шел, прописал путь и скомпилировал программу. Как раз это мне и нужно было.

  • 2008dmx говорит:

    Вы в своём уме? ЗАЧЕМ эта простыня???

    Есть far manager, попробуйте, он рулез!

    Так и не увидел настроек компилятора, типа march=native и тп

    Кстати, компилятор из начала 200x побыстрее будет! (по скорости выполнения)

    Подходит для старых(простых) проектов http://www.delorie.com/djgpp/

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Народная примета: если программист в 9.00 утра на работе, значит, он там ночевал...

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок