MinGw Windows как работать через консоль? — Toster.ru

.

Система 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. 

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

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

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

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

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

 

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

[Ссылки

1. Mingw-w64 — GCC for Windows 64 & 32 bits site:mingw-w64.sourceforge.net.
2. MinGW-w64 — for 32 and 64 bit Windows site:sourceforge.net.

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

SjLj, SetJump LongJump.

MinGw Windows как работать через консоль?

Этот метод обработки исключений работает в большинстве случаев на обоих платформах 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

Компиляция wxWidgets


Компиляция wxWidgets на примере версии 3.1.0 для компилятора MinGW в Windows.
Первым делом скачиваем компилятор MinGW тут или тут если его у вас до сих пор нет и исходники WxWidgets. После чего распаковываем в C://MinGW/ и C://wxWidgets/ соответственно. Запускаем командную строку с правами администратора и начинаем…

1.

Как пользоваться mingw?

Проверяем версию MinGW

cd C:\MinGW\bin\ mingw32-make -v

Версия компилятора должна быть выше 3.80, в случае если вы хотите скомпилировать wx 3.1.0

2. Выбираем директории

cd /d C:\wx\build\msw SET PATH=C:\MinGW\bin

3. Компилируем

— USE_XRC поддержка формата XRC для построения графического интерфейса
— SHARED подключать библиотеки в виде dll или линковать внутрь программы
— MONOLITHIC собирать как одну большую библиотеку со всеми пакетам либо все пакеты по отдельности
— UNICODE поддержка юникода
— USE_OPENGL использовать Open GL
— BUILD режим сборки, release или debug, тут думаю все ясно 🙂

mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1 UNICODE=1 USE_OPENGL=1 BUILD=release

После этого можете ставить чайник и минут 20 не подходить к компьютеру, после чего компиляция будет завершена.
PS: Рекомендую использовать батник следующего вида, который можно запустить и спокойно заниматься своими делами:

cd C:\wx\build\msw SET PATH=C:\MinGW\bin mingw32-make.exe -f makefile.gcc MONOLITHIC=0 USE_XRC=1 SHARED=1 UNICODE=0 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=0 USE_XRC=1 SHARED=1 UNICODE=1 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1 UNICODE=0 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1 UNICODE=1 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=0 UNICODE=1 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=0 UNICODE=0 USE_OPENGL=1 BUILD=release mingw32-make.exe -f makefile.gcc MONOLITHIC=0 USE_XRC=1 SHARED=1 UNICODE=0 USE_OPENGL=1 BUILD=debug mingw32-make.exe -f makefile.gcc MONOLITHIC=0 USE_XRC=1 SHARED=1 UNICODE=1 USE_OPENGL=1 BUILD=debug mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1 UNICODE=0 USE_OPENGL=1 BUILD=debug mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=1 UNICODE=1 USE_OPENGL=1 BUILD=debug mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=0 UNICODE=1 USE_OPENGL=1 BUILD=debug mingw32-make.exe -f makefile.gcc MONOLITHIC=1 USE_XRC=1 SHARED=0 UNICODE=0 USE_OPENGL=1 BUILD=debug pause

Немного статистики:

Многих интересует вопрос, сколько же весит приложение написанное на wxWidgets в Code::Blocks.

Замеры я производил на разных версиях с разными вариантами компиляции, в качестве примера использовал обычный пустой проект.
3.1.0
1. USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 USE_OPENGL=1
— бинарник 603 Кб
— wxmsw310u_gcc_cb.dll 26,4 Мб
— wxmsw310u_gl_gcc_cb.dll 994 Кб
Размер бинарника невелик, но есть зависимость в виде пары библиотек
2.8.12
1. SHARED=0 MONOLITHIC=1 BUILD=release UNICODE=1
— бинарник 2.3 Мб
— зависимостей нет
2. SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1
— бинарник 157 Кб
— wxmsw28u_gcc_custom.dll 10 Мб

Установка GNU C (gcc) для Windows (MinGW)

Подготовка пакетов для С++ и копирование без инсталляции

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

C:\MyProjects\MinGW (далее должно следовать ..\bin\ и т.д.)

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

Все локально

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

Я специально отделяю эту инсталляцию от других возможных инсталляций GCC в системе. Она не вызывает конфликта ни с QT ни с SDK для контроллеров.

Вставить/изменить ссылку

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

Откуда все взялось знать не обязательно.

Откуда взялось

Исходное скачивание проводится на компе с интернетом.

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

Предупреждаю, что эта процедура может привести к скачиванию более новых версий и соответственно к несовместимости с какими то исходниками отлаженными под то что выдано выше.

Сайт

Согласно инструкции на http://www.mingw.org/wiki/InstallationHOWTOforMinGW скачиваем mingw-get installer.

mingw-get

Распаковываем в C:\MinGW.

Запускаем cmd.exe и пишием:

  • C:>cd C:\MinGW\bin
  • C:\MinGW\bin>mingw-get.exe update

(далее текущая директория C:\MinGW\bin подразумевается)

  • mingw-get.exe install mingwrt
  • mingw-get.exe install w32api
  • mingw-get.exe install binutils
  • mingw-get.exe install gcc
  • mingw-get.exe install g++
  • mingw-get.exe install mingw32-make

Проверяем

  • создаем C:\MinGW\bin\test
  • создаем C:\MinGW\bin\test\test.cpp

#include "windows.h"

int main()

{

MessageBox(0, "Hi " __DATE__ " " __TIME__, "MinGW", 0);

return 1;

}

  • создаем C:\MinGW\bin\test\testgcc.bat

set PATH=C:\MinGW\bin;%PATH%

gcc test.cpp

pause

  • запускаем testgcc.bat и получаем:

C:\MinGW\bin\test>set PATH=C:\MinGW\bin;C:\Program Files\…………..

C:\MinGW\bin\test>gcc test.cpp

C:\MinGW\bin\test>pause

Press any key to continue . . .

  • должен появится a.exe, запускаем, убеждаемся что MessageBox() сработал.

По мининимуму больше ничего не нужно. Компиляцию будет организовывать Jam.

Как использовать gcc-компилятор MinGW при установке пакета Python с помощью Pip?

Я настроил MinGW и distutils, поэтому теперь я могу скомпилировать расширения с помощью этой команды:

Будет использован gcc-компилятор MinGW, и пакет будет установлен. Для этого я установил MinGW и создал файл distutils.cfg со следующим содержимым:

  • Как сказать distutils использовать gcc?
  • Установка пакетов Python в Windows
  • Как добавить данные пакета рекурсивно в Python setup.py?
  • Как расширить distutils с помощью простого сценария установки после установки?
  • Как указать easy_install на vcvarsall.bat?
  • Ошибка установки пакета python pip, ошибка dllwrap после «исправления»: «невозможно найти vcvarsall.bat»
  • Это круто, но теперь я хотел бы использовать все преимущества пипса.

    Установка GNU C (gcc) для Windows (MinGW)

    Есть ли способ использовать тот же самый компилятор MinGW gcc в pip? Так что, когда я запускаю это:

    pip будет использовать компилятор gcc MinGW и компилировать код C, если это необходимо?

    В настоящее время я получаю эту ошибку: . Кажется, pip не знает, что у меня есть gcc-компилятор. Как я могу настроить pip для использования gcc-компилятора?

  • Как сказать distutils использовать gcc?
  • Как расширить distutils с помощью простого сценария установки после установки?
  • Какие части виртуального пространства необходимо изменить, чтобы переместить его?
  • Может ли пакет Python зависеть от конкретной версии управления версиями другого пакета Python?
  • MANIFEST.in игнорируется на "python setup.py install" — файлы данных не установлены?
  • Python distutils — кто-нибудь знает, как его использовать?
    • установить MinGW с опцией компилятора C ++
    • добавьте к ваше&#x43C
      ;у PATH
    • в создайте файл и добавьте следующие строки:

    Даже несмотря на то, что файл конфигурации решает эту проблему, это не всегда вариант.

    У меня была такая же проблема для моего процесса установки в командной строке, и я не смог изменить файлы конфигурации на всех машинах и дистрибутивах python.

    Это мое решение:

    Для mingw32 и пакетов, которые используют VC ++ по умолчанию:

    Для Visual C ++ на WinPython, который использует mingw32 по умолчанию:

    Может быть, вы не положили distutils.cfg в нужное место? Я решил ту же проблему, создав файл pydistutils.cfg внутри c: \ Documents and Settings \ myuser, с тем же содержимым, что и ваш. Я сделал это, и это работает. НТН

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

    Ваш e-mail не будет опубликован. Обязательные поля помечены *