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

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Во время обучения C++ часто можно слышать про командную строку. Для тех, кто работает в Windows, понятие запуска из командной строки может быть в диковинку, потому что не очень понятно, что запускать именно.

Для примера я возьму компилятор MinGW. Используемая ОС Windows7
Для начала, этот компилятор MinGW нужно скачать из интернета.
_____________________________
1. Скачиваем установщик MinGW c сайта mingw.org›Download/installer
Называется он mingw-get-setup.exe
или с другого сайта (могут быть нестабильные версии, но новее официальных)онлайн установщик
2. Запускаем его, нажимаем install
3. В открывшемя окне Вы можете изменить директорию установки, нажав Change (По умолчанию C:\MinGW). Я оставляю как есть, т.е. в C:\MinGW, при этом не меняя галочки.
Нажимаем continue
4. Начался процесс загрузки всего необходимого из интернета. Нужно дождаться окончания.
5. Нажимаем continue
_____________________________
Все, установщик установлен и открывается такое окно:
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. В итоге, квадрат левее названия компилятора отметился, символизируя, что компилятор установлен.
Теперь уже можно компилировать коды, все, что нужно — это указывать в командной строке cmd.exe из Windows полный путь к компилятору, а не короткий g++

  • C:\MinGW\bin\g++    C:\C++\HelloWorld\Hello.cpp   -o   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, что-то написано, то дописывать через точку-запятую, как на картинке выше.

Чтобы работать с командной строкой в Windows7, можно запустить консольное окно.
Это консольное окно можно запустить через Пуск-Выполнить (комбинация клавиш Win+R), куда вводите cmd и жмете Enter. Клавиша Win — это та клавиша, на которой нарисован логотип Windows
либо же C:\Windows\System32\cmd.exe (Но проще через поиск(искать cmd) и еще проще клавишами).
Выглядит консольное окно в 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

но благодаря указаниям в системных переменных путя к компилятору, можно писать короче.

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

Если все правильно указано, то короткая запись сработает.
Немного ждем и программа готова, называется Hello.exe и лежит в C:\C++\HelloWorld\ (для того, чтобы убедится, зайдите туда не через консоль, а как обычно мы гуляем по папкам).

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

Разумеется, выходной файл можно записывать в любой существующий каталог (куда удобнее), не обязательно в папку с исходником.
____________________________
Кроме такого варианта, который только что был описан можно закачать MSYS, вероятно вы заметили в установщике mingw, msys-base (см. вниз на самую первую картинку), он устанавливается аналогично тому, как ставили компилятор, нажать на квадратик левее и всё очень похоже.
После установки в C:\MinGW\msys\1.0 лежит msys.bat, который можно использовать для компиляции. Запускаем его,
пишем: g++ C:\\C++\\HelloWorld\\Hello.cpp    -o    C:\\C++\\HelloWorld\\Hello.exe и жмем Enter. Файл готов, где лежит должны догадаться.

Т.е. между mssys и cmd разница со слешами. Еще, если в mssys гудки, то значит клавиатура включена на русскую раскладку и нужно переключить.
Вот такой вот получился материал. Теперь записи 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

Встречает в аду один черт другого и говорит: "Слушай, это ты того компьютерщика сюда притащил?" - "Да, а что?" - "Ты в другой раз толком объясняй, что такое ад - а то он, пока понял, что это не Doom, двести чертей перестрелял..."

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

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