Для тех, кто работает в ОС 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:
Выбираем MinGW-32-gcc-g++, щелкнув по пустому квадрату, левее него, мышкой, после чего жмем на Mark for installation.
Нажимаем меню наверху: Installation -> Apply Change и в открывшемся окне жмем Apply.
Должна начаться загрузка, ждем окончания.
По окончанию загрузки нужно закрыть диалоговое окно, в котором первая запись гласит, что все изменения успешно применены: All changees were applied succefully; you may now close this dialogue. Смело жмем close.
Если всё прошло гладко, то квадрат, который мы недавно выбирали, будет отмечен, а в колонке Installed Version укажется версия установленного компилятора .
Если вы хотя бы немного знаете английский язык, то с установкой у вас будет намного меньше проблем, чем в случае, если английского языка вы совсем не знаете. Надеюсь того, что описано на этой странице, будет достаточно для понимания процесса самой установки.
Так как компилятор есть, то его можно использовать, с его помощью можно компилировать пишемые нами коды.
В операционной системе Windows есть такая штука, которая называется "Переменные окружения", если не знать, что это такое, то для использования компилятора придётся прописывать в командой строке полные пути. В книгах вы можете видеть способ компилирования g++, а нам, без дополнительной возни, придётся писать нечто похожее на C:\MinGW\bin\g++:
В общем, нужно писать полные пути. Такая делема в Windows решается путём добавления путей к компилятору в переменную окружения PATH. После добавления путей в PATH можно спокойно компилировать программы, используя простое название компилятора: g++
Если у Вас нет исходного кода, то, разумеется, его нужно написать и где-то сохранить. Сохранить лучше таким образом, чтобы прописывание пути к сохранённому файлу было как можно понятнее. Лучше всего, если весь путь не содержит русских символов, а содержит только символы латинского алфавита, к тому же хорошо, если путь не содержт пробелов.
Основная часть команды компиляции, которую нам, новичкам, легче всего понять, состоит из трёх частей: указание компилятора, указание входного файла для сборки и указание куда и как сохранить сделанный файл:
Выделенное белым цветом и есть указание компилятора, которым мы собрались компилировать код.
В Windows можно и желательно сделать так, чтобы не приходилось постоянно указывать весь путь к компилятору, а было можно указывать только сам компилятор, чтобы в командной строке срабатывали коды, подобные:
Для этого используют системные переменные Windows (переменные окружения).
Переходим к интересующей нас части, к работе с компилятором из командной строки Windows.
Первое, что нужно сделать — добавить переменную окружения. См. картинки.
Нужно в PATH дописать каталог C:\MinGW\bin (согласно пути, куда установлен MinGW), если там, в PATH, что-то написано, то дописывать через точку-запятую, как на картинке выше.
Для работы с командой строкой Windows обычно используется программа CMD.EXE, эту программу нужно запустить. Запустить её можно разными способами: комбинацией клавиш Win+R; Пуск -> Выполнить, ввести cmd, нажать Enter; запустить по прямому пути: C:\Windows\System32\cmd.exe (но быстрее клавишами). (Клавиша Win — это клавиша с рисунком логотипа Windows)
Выглядит консольное окно в Windows приблизительно так
Для компиляции исходного кода из командной строки готово почти всё. Давайте напишем нашу первую программу в обычном блокноте.
Я создам каталог C:\C++\HelloWorld, внутри которого создам текстовый документ , который сохраню как Hello.cpp.
Всё это создается обычными тырканиями вне консоли, т. к. пока геройствовать с консолью не особо нужно, хотя можно и из нее, просто сейчас незачем. Делается всё самым обычным, привычным и простым способом.
Содержимое текстового документа:
C++
1
2
3
4
5
6
#include <iostream>
usingnamespacestd;
intmain(){
cout<<"Hello\n";
cin.get();//Для того, чтобы сразу не закрывалось
}
Надеюсь, создавать папки и текстовые документы умеют все. В идеале называния файлов и папок не должны содержать русских символов и пробелов, потому что с ними возможны проблемы. Привыкайте к именованию в латинской раскладке.
И вот приступаем к самой главной части, наконец заставляем компилятор превратить наш код, написанный в текстовом документе, в полноценную программу. Консольно окно должно быть открыто, что в нём написано нас мало интересует, не обращаем особого внимания, просто пишем
Если вы дописывали пути в переменную PATH (о чём писалось чуть ранее), то вам можно писать короче:
g++-oC:\C++\HelloWorld\Hello.exe
Если при добавлении путей в переменную PATH ошибок допущено не было, то короткая запись сработает. Написали указанную строчку, подтверждаем нажатием клавиши Enter, немного ждём, и программа готова! Готовая программа называется Hello.exe, лежит в C:\C++\HelloWorld\ (в чём легко убедиться, если зайти по этому пути и посмотреть, какие там файлы ).
Вот такие дела. Для ясности немного сокращаю всё описанное выше. Порядок действий при создании программы такой:
Вызов компилятора C:\MinGW\bin\g++
Указание компилятору, где лежит, что ему обрабатывать: C:\C++\HelloWorld\Hello.cpp
Указание компилятору, куда сохранить то, что он сделает, и как ему это делать: -oC:\C++\HelloWorld\Hello.exe
Разумеется, выходной файл можно записывать в любой существующий каталог (куда удобнее), не обязательно в папку с исходником.
Компилятор можно устанавливать разными способами, не только таким, который описан в статье. Одним из хороших альтернативных способов установки компилятора MinGW является использование специальной утилиты MSYS
В скачанном установщике можно выбрать msys-base (см. в колонку "package"). Весь процесс установки аналогичен уже написанному. Если хотите, можете поставить.
После установки MSYS вы должны найти файл msys.bat, который находится в C:\MinGW\msys\1.0. Нужно запускать этот файл. Когда программа запустится, останется писать команды.
Пишем команду компиляции: g++C:\\C++\\HelloWorld\\Hello.cpp-oC:\\C++\\HelloWorld\\Hello.exe
и жмём клавишу Enter для выполнения.
Утилита MSYS использует компилятор g++, в результате чего будет создан файл, сохранится он в C:/C++/HelloWorld (т. е. куда укажите, там и будет).
Несложно заметить, что различается в MSYS.BAT и CMD.EXE способ написания слешей. При работе с MSYS.BAT писать команды нужно при латинской раскладке клавиатуры, если раскладка русская, то будете слышать характерные гудки.
Такой вот получился материал. Теперь книги, в которых для компилирования используется командная строка, вам будут намного понятнее. Поэтому нечто вроде g++Тра-ля-ля вас напугать не должно.
При попытке ввести в командной строке: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 говорит:
Раскладка и написание корректны.
Методом научного тыка выявлено, что программа компилируется, только если вместо пробелов поставить знак >
Это для информации, может кому пригодится.
Возможные проблемы:
1) Может не все файлы скачать с зеркала (у меня полный размер папки MinGW получился 238 МБ (250 530 318 байт)) (в первый раз скачало намного меньше файлов чем должно было, поэтому не работало). В зависимости от версии, размер может меняться, но не должен быть совсем маленьким.
2) При компилировании, возможна всплывающая ошибка "….не найден zlib1.dll" – нужно скачать/проверить антивирусом и поместить его в C:\WINDOWS\system32
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()
C++
1
#include <windows.h>
Следующие три строки пишутся внутри функции int main(), т.е сразу после открывающейся фигурной скобки.
C++
1
2
3
2)setlocale(LC_ALL,"");
3)SetConsoleCP(1251);// На ввод
4)SetConsoleOutputCP(1251);//На вывод.
Для устранения "иероглифов" обязательно сделать шрифт командной строки "Lucida Console", (точечные шрифты с русскими символами не дружат). Вот чтобы так поменять шрифт, необходимо:
1) Найти расположение командной строки (cmd.exe), у меня это (C:\WINDOWS\system32)
2) Создать ярлык командной строки (cmd.exe), зайти в его Свойства => Шрифт, далее установить "Размер 14" "Шрифт – Lucida Console". Вынести созданный ярлык с измененным для него шрифтом на рабочий стол и запускать командную строку через него (компиляцию/выполнение).
Да спасибо всё сразу получилось, объяснения чёткие и подробные. Только вот что, я воспользовался Qt-товским , MinGW-веем и при запуске EXE файла он ругается и требует библиотеку libgcc_s_dw2-1.dll Это как, у меня MinGW недоукомплектован получается, не подскажете где мне искать эту библиотеку?
Не могу сказать про укомплектованность или недоукомплектованность.
Для начала стоит поискать его в папке QT и в папке вцепленного в него компилятора. Если найдется, то в Windows добавить пути в системные переменные, а если не найдется, то гуглить этот файл. (То, что *.exe или телефонов для регистрации требуют, обязательно игнорировать).
Что-то нихрена не устанавливается. Не скачиваются необходимые файлы за 2 дня безуспешных попыток. Разработчики mingw видимо мудаки. Их нужно на мыло сдать.
Автору за труды грамота. Но…
Куча ошибок в русском языке (значит и автоматическим проверщиком грамматики пользоваться не умеет, которые весьма полезен, если уж сам не особо в русском), а главное — в самих ключевых понятиях.
Например, MinGW назван компилятором. Хотя, всем известно, что это — целый пакет программ, набор инструментов для разработки программ.
Короче, как-то по школьнически получилось. На зачёт по факультативу для 7 класса сойдёт.
{Работайте над языком. Вычитывайте. Уточняйте и правьте перед публикацией.
Иначе будете, как очередной генератор мусора в Инете.}
Почему при включении в код cin >>, программа сразу же закрывается и не даёт даже ничего вписать. А debug (используя другую программу для кода) пишет, что там ошибка какой-то сегментации..
Какая программа? В статье описан способ работы с командной строкой/ Написано в 2011 году. Я сейчас попробовал в win10 запустить, так возникает куча проблем с dll. Но какая программа имелась в виду вами — непонятно.
Спасибо Вам за этот материал! Это как раз то, что я искал. Объяснено всё очень доходчиво. В итоге у меня всё получилось!
При попытке ввести в командной строке:g++ C:\C++\HelloWorld\Hello.cpp -o C:\C++\HelloWorld\Hello.exe
(с пробелами)
выходит ошибка g++: fatal error: no input files compilation terminated.
А если ввести всю команду целиком без пробелов, выходит ошибка "Синтаксическая ошибка в имени файла, имени папки или метке тома".
Так что же делать?
Возможные проблемы:
1) Может не все файлы скачать с зеркала (у меня полный размер папки MinGW получился 238 МБ (250 530 318 байт)) (в первый раз скачало намного меньше файлов чем должно было, поэтому не работало). В зависимости от версии, размер может меняться, но не должен быть совсем маленьким.
2) При компилировании, возможна всплывающая ошибка "….не найден zlib1.dll" – нужно скачать/проверить антивирусом и поместить его в C:\WINDOWS\system32
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 недоукомплектован получается, не подскажете где мне искать эту библиотеку?
Не могу сказать про укомплектованность или недоукомплектованность.
Для начала стоит поискать его в папке QT и в папке вцепленного в него компилятора. Если найдется, то в Windows добавить пути в системные переменные, а если не найдется, то гуглить этот файл. (То, что *.exe или телефонов для регистрации требуют, обязательно игнорировать).
Может быть мне шаманить в папке Qt, ну в смысле сохранить cpp файл и затем компилировать. Если да то в какой именно папке, их там до фига.
Заработало !!! Спасибо. Нашёл не достающие библиотеки в папке с бинариками, там где лежит сам MinCW-вей.
Спасибо за статью, помогло.
Взял компилятор minGW, который с Qt шел, прописал путь и скомпилировал программу. Как раз это мне и нужно было.
Вы в своём уме? ЗАЧЕМ эта простыня???
Есть far manager, попробуйте, он рулез!
Так и не увидел настроек компилятора, типа march=native и тп
Кстати, компилятор из начала 200x побыстрее будет! (по скорости выполнения)
Подходит для старых(простых) проектов http://www.delorie.com/djgpp/
Что-то нихрена не устанавливается. Не скачиваются необходимые файлы за 2 дня безуспешных попыток. Разработчики mingw видимо мудаки. Их нужно на мыло сдать.
Автору за труды грамота. Но…
Куча ошибок в русском языке (значит и автоматическим проверщиком грамматики пользоваться не умеет, которые весьма полезен, если уж сам не особо в русском), а главное — в самих ключевых понятиях.
Например, MinGW назван компилятором. Хотя, всем известно, что это — целый пакет программ, набор инструментов для разработки программ.
Короче, как-то по школьнически получилось. На зачёт по факультативу для 7 класса сойдёт.
{Работайте над языком. Вычитывайте. Уточняйте и правьте перед публикацией.
Иначе будете, как очередной генератор мусора в Инете.}
Почему при включении в код cin >>, программа сразу же закрывается и не даёт даже ничего вписать. А debug (используя другую программу для кода) пишет, что там ошибка какой-то сегментации..
Какая программа? В статье описан способ работы с командной строкой/ Написано в 2011 году. Я сейчас попробовал в win10 запустить, так возникает куча проблем с dll. Но какая программа имелась в виду вами — непонятно.