Mingw windows как запустить

Mingw windows как запустить

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

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

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

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

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

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

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

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

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

При попытке ввести в командной строке: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 >

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

Читайте также:  Ноябрьские обновления для windows 10

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

В поддержку Qt

статьи в помощь разработчику

Установка MinGW

Компилятор MinGW является важным компонентом среды разработки приложений для Windows с использованием библиотеки Qt, если конечно Вы выбрали именно такой вариант, а не альтернативный, использующий Microsoft Visual Studio. Данная статья призвана оказать помощь в установке компилятора.

В Linux устанавливать компилятор MinGW может потребоваться только в том случае, если Вы собираетесь производить сборку приложений для Windows. О том как это делается, в том числе и непосредственно сам процесс установки MinGW, подробно изложено в посвященной этой теме статье.

При установке Qt 5 имеется возможность установить и требуемую версию компилятора MinGW (см. здесь). Для независимой установки выполняются действия, описанные ниже.

1. Скачиваем отсюда готовую сборку MinGW 4.9.2

i686-4.9.2-release-posix-dwarf-rt_v3-rev1.7z 48 MB
(именно 1-я «ревизия» устанавливается с Qt 5.5.1)

2. В архиве лежит папка mingw32 , распаковываем ее в папку C:\Qt и переименовываем, например, в mingw-4.9.2 .

Данная версия замечательна тем, что вместе с MinGW устанавливается и работоспособный MSYS, без которого никак не обойтись. Процесс установки совсем несложный.

1. Скачиваем с сайта разработчика файл установщика онлайн

mingw-get-inst-20120426.exe 647 KB

2. Запускаем установщик и следуем инструкциям. При запросе

Use pre-packaged repository catalogues 20120426
Download latest repository catalogues

следует выбрать первый из предложенных вариантов установки. Путь установки, предложенный по умолчанию, лучше изменить, но пробелы в нем должны отсутствовать. Пусть будет, например, C:\Qt\mingw-4.6.2 . Группу создаваемых ярлыков назовем MinGW 4.6.2 . Когда будет предложено выбрать устанавливаемые компоненты, следует обязательно отметить пункты C++ Compiler и MSYS Basic System . Последний потребуется для сборки отладчика GDB (см. статью). Во время работы установщика в консольном окне будут отображаться выполняемые действия – загрузка компонентов, их распаковка, настройка и т.п.

Основным востребованным инструментом данной версии MinGW будет оболочка командной строки Unix-подобной среды. Запустить ее можно, воспользовавшись пунктом главного меню MinGW Shell из созданной при установке группы ярлыков или выполнив в командной строке Windows

3. В заключение добавим несколько пакетов, которые не вошли в состав ядра MSYS, но могут оказаться востребованными. Речь идет о библиотеке bz2 , а также утилитах patch и unzip . Для их установки запускаем MinGW Shell и вводим команды

mingw-get install msys-libbz2
mingw-get install msys-patch
mingw-get install msys-unzip

Установить перечисленные выше пакеты можно добавить и вручную, как предлагалось в предыдущей редакции статьи.

Данная версия MinGW требуется для использования с библиотекой Qt 4.8.5 и ниже, например, для поддержки старых проектов, время модернизации которых под Qt 5 не настало. Для установки выполняются действия, описанные ниже.

1. Скачиваем отсюда или отсюда готовую сборку

MinGW-gcc440_1.zip 34 MB

Следует отметить, что в настоящее время приведенные здесь ссылки пожалуй являются одними из немногих рабочих. Спасибо за них сайтам code.google.com и code.x2go.org.

2. В архиве лежит папка mingw , распаковываем ее в папку C:\Qt и переименовываем, например, в mingw-4.4.0 .

Это новая редакция статьи, старая редакция доступна по ссылке.

Mingw windows как запустить

Система MinGW [1] часто используется как среда для исполнения утилит, пришедших с платформы Unix — make, gcc, g++ и т. д. Они нужны в первую очередь для компилирования приложений на платформе Windows с помощью бесплатных сред разработки (Eclipse, Dev-Cpp, wxDev-C++ и другие).

Есть порты MinGW для 32-битной и для 64-битной версий Windows. Установка 64-битной версии имеет несколько не очень понятных опций настройки, которые специально рассмотрены в этой статье.

[Процесс установки MinGW-W64 по шагам]

1. [2] -> Download -> mingw-w64-install.exe, запустите.

2. На первом экране появится приветствие мастера установки, просто Кликните Next.

3. Затем появляется важный экран настройки, где нужно выбрать опции системы.

Architecture: i686 или x86_64. Выберите x86_64, если у Вас современный процессор Athlon или Intel. Если у Вас старый Pentium Pro, Pentium II или Pentium III, то выберите i686.

Threads: posix или win32. Здесь выбирается GCC Threading model. Что выбрать — единого мнения нет. Если Вам нужно портировать сложные многопоточные приложения из Linux или FreeBSD, то возможно Вам лучше подойдет posix. Я обычно выбираю win32.

Читайте также:  Live usb дистрибутивы linux с сохранением сеансов

Exception: dwarf, sjlj или seh. Это относится к методике обработки ошибок. Состав выпадающего списка зависит от предыдущих опций.

Dwarf-2 EH. Реализация для Windows сама по себе не разработана для работы в условиях исполнения 64-битны приложений Windows. В режиме win32 вызываемый обработчик исключения не может распространяться на код, не совместимый со стандартом dw2; это означает, что любое исключение, которое происходит через любые «чужие фреймы» non-dw2 приведет к отказу, включая системные DLL Windows и DLL, встроенные в Visual Studio. Раскручивание кода Dwarf-2 в gcc включает инспектирование сборки x86, и оно не может происходить без соответствующей отладочной информации dwarf-2.

SjLj, SetJump LongJump. Этот метод обработки исключений работает в большинстве случаев на обоих платформах win32 и win64, за исключением сбоев общей защиты (general protection faults). Поддержка структурированной обработки ошибок разработана для gcc с целью преодолеть недостатки dw2 и sjlj. На платформе win64, информация отката размещается в секции xdata и в .pdata (таблица описания функции) вместо стека. Для win32 цепочка обработчиков сохраняется в стеке, и нуждается в сохранении/восстановлении с помощью реально выполняющегося кода.

GCC поддерживает два метода обработки исключений (EH):

DWARF-2 (DW2) EH, который требует наличия в выполняемом коде отладочной информации DWARF-2 (или DWARF-3). DW-2 EH может привести к некоторому разрастанию размера исполняемого кода, потому что в код добавляется большие таблицы отката по содержимому стека.

SJLJ. Этот метод базируется на setjmp/longjmp (SJLJ). Он несколько медленнее, чем DW2 EH (влияет даже на нормальное выполнение, когда не срабатывают исключения), однако он может работать поверх кода, который не был скомпилирован GCC, или в котором нет информации о истории вызовов через стек (call-stack unwinding information).

Structured Exception Handling (SEH). Windows использует свой собственный механизм обработки исключений, известный как Structured Exception Handling (SEH). К сожалению, GCC пока его не поддерживает. Однако обещается, что для x64 в появится поддержка SEH начиная с версии GCC 4.8.

Exception handling models of GCC site:stackoverflow.com
C++ Exception Handling for IA-64 site:static.usenix.org
EH newbies howto gcc.gnu.org
MinGW 64 bit Exception handling: SJLJ, DWARF, and SEH site:qt-project.org

Я выбрал для своей установки вариант seh.

4. На этом шаге нужно просто выбрать каталог установки. Оставьте все по умолчанию.

5. Запустится процесс закачки, который займет некоторое время.

По окончании загрузки нажмите Next и после окончания копирования Finish.

Если Вы хотите, чтобы утилиты из каталога c:\Program Files\mingw-w64\x86_64-4.9.2-win32-seh-rt_v3-rev1\mingw64\bin\ запускались без ввода полного пути, то добавьте этот каталог в пути поиска (в переменную окружения %Path%).

Cygwin или MinGW? Собираем программы для Windows без Windows

Содержание статьи

В общем-то, даже в Microsoft уже признали проблему и сделали WSL (Windows Subsystem for Linux), чтобы запускать те приложения, у которых нативных версий под Windows нет. Однако если ты хочешь сделать свою программу доступной для широкой аудитории, то WSL вовсе не панацея, поскольку у среднего пользователя эта система вряд ли установлена и у нативных приложений возможностей для интеграции с Windows все равно больше.

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

Сборка-то обычно и зависит от окружения POSIX. Если ты используешь GNU autotools, то скрипт ./configure у тебя на Bourne shell. CMake и ряд других систем сборки умеют генерировать скрипты под целевую ОС, но остается последняя «маленькая» проблема — нужна проприетарная и не бесплатная ОС. Есть вариант переложить задачу ее развертывания и лицензирования на кого-то другого и обратиться к сервису вроде Appveyor. Но можно вместо этого воспользоваться способностью GCC к кросс-компиляции и собирать программы на хосте с Linux (или macOS).

GNU и Windows

Для сборки программ с помощью GNU toolchain на Windows часто используют два проекта: Cygwin и MinGW + MSYS. У них схожие цели, но разные детали реализации. Давай разбираться.

Читайте также:  Изменение анимации при загрузке windows

Cygwin

Cygwin — самая полная реализация окружения GNU для Windows. Он предоставляет большую часть POSIX API в виде библиотеки, что позволяет собирать программы из UNIX без портирования, если только им не требуется семантика UNIX. Яркий пример — демоны, им нужен fork() и сигналы, которых нет в Windows, да и службы Windows устроены совсем иначе.

Кроме библиотеки, дистрибутив содержит набор классических команд UNIX и терминал. Реализации команд используют эту библиотеку и поддерживают некоторые возможности UNIX, такие как регистрозависимые имена файлов.

Целевой способ использования: если нет желания или возможности портировать программу на Windows или использовать только платформенно независимые API, ее можно собрать «под Cygwin», ценой зависимости от cygwin1.dll и относительной изоляции от всей остальной системы.

Многие люди ставили и продолжают ставить окружение Cygwin, чтобы иметь возможность использовать классические команды UNIX на Windows. Некоторые разработчики также включают Cygwin в инструкции для сборки своих программ под Windows, хотя сама программа не связывается с cygwin1.dll . Для этой цели может быть более правильно использовать MSYS.

MinGW и MSYS

Если цель Cygwin — сделать возможной сборку немодифицированных приложений на Windows ценой внешней зависимости, то цель MinGW + MSYS — производить приложения без внешних зависимостей.

MinGW и MSYS — это независимые пакеты, но их часто путают и смешивают друг с другом (а часто путают и с Cygwin). Можно сказать, что MinGW — это эквивалент GCC и binutils, а MSYS — расширенный эквивалент coreutils.

Начнем с MSYS. MSYS — это более «нативная» и легковесная альтернатива Cygwin. Этот пакет включает библиотеку с реализациями функций POSIX, но она предназначена для внутреннего пользования, и авторы категорически не рекомендуют связывать с ней свои приложения.

Библиотека MSYS не реализует UNIX поверх Windows, а следует соглашениям Windows — к примеру, сознательно не учитывает регистр букв в путях к файлам. Главная цель MSYS — предоставить нужные для скриптов сборки программы вроде Bourne shell, make и прочее, что обычно требуется для autotools.

MinGW содержит версии GCC и binutils (ассемблер as, компоновщик ld и так далее), которые производят исполняемые файлы для Windows в формате PE/COFF. Здесь мы и подходим к ключевому моменту: MinGW, как и все остальные части GNU toolchain, такой же платформенно независимый проект.

Кросс-компиляция в GNU toolchain уже давно обычное дело, и в GCC целевая платформа и хост независимы друг от друга. Можно запускать GCC на Linux для x86 и собирать программы для Linux на ARM, или наоборот. Совпадать не обязаны не только рабочая и целевая архитектуры процессора. Точно так же не обязаны совпадать даже ОС и формат исполняемого файла.

Ставим MinGW

Авторы многих дистрибутивов GNU/Linux уже постарались за нас, так что многие кросс-версии GCC, включая MinGW, можно поставить из репозиториев.

Например, в Fedora:

Если ты используешь macOS, то MinGW можно поставить из Homebrew: brew install mingw-w64 .

MinGW-w64, несмотря на название, поддерживает и Win32, и Win64. Это форк MinGW, который создали в первую очередь для реализации недостающей в оригинальном проекте поддержки Win64, отсюда и название.

В Fedora также присутствует ряд готовых кросс-версий популярных библиотек, например mingw32-qt .

Hello World

Для демонстрации соберем традиционный hello world. У кросс-версий GCC всегда есть префикс, для MinGW используются префиксы i686-w64-mingw32 и x86_64-w64-mingw32 .

Тестирование кросс-компилированных программ для других архитектур — непростая задача, но, поскольку наша целевая платформа — Windows на x86, мы легко можем протестировать их в Wine:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Оцените статью