пятница, 19 июня 2009 г.

Установка MinGW

MinGW - это нативный порт компиляторов GCC на платформу Windows. На сегодняшний день является наиболее «вменяемой» бесплатной альтернативной коммерческим компиляторам. Повсеместно применяется для разработки кросс-платформенных приложений. Например, именно MinGW используется в качестве компилятора С++ под Windows в средах разработки Qt Creator, Code::Blocks (в качестве основного), NetBeans и Eclipse.

Ниже я перечислю основные особенности MinGW и опишу несколько способов для его установки.


Для начала перечислю важные (на мой взгляд) особенности MinGW. ;)

Основные достоинства:
+ полностью бесплатен;
+ генерирует хороший быстрый код;
+ непрерывно развивается;
+ удобство и компактность установки.

Основные недостатки:
- Относительно медленная компиляция C++ кода;
- Относительно медленная линковка результирующего файла;
- Несовместимость с, содержащими C++ классы, *.lib и *.dll файлами созданными в MS Visual Studio. По этой причине MinGW и PhysX SDK не дружат друг с другом..

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

Способ 1- использовать автоматический установщик с официального сайта MinGW.
Установщик официальной версии MinGW следует искать на сайте http://mingw.org/
На момент написания этих строк файл установщика называется «MinGW-5.1.4.exe» и его можно загрузить со страницы загрузки.
Установщик состоит из одного файла «MinGW-5.1.4.exe» и имеет мизерный разер (~140 KB). Непосредственно при установке он выкачивает дополнительные архивы с компонентами GCC. По умолчанию MinGW ставиться в папку «c:\mingw» Перед установкой рекомендую поместить «MinGW-5.1.4.exe» в отдельную пустую папку, т.к. все выкаченные архивы кэшируются в папке откуда запущена установка. Если ничего не удалять, то можно все это добро скопировать и устанавливать без интернета, запуская все тот же «MinGW-5.1.4.exe».

Следует отметить, что при установке через «MinGW-5.1.4.exe», можно выбрать версию Mingw (Previous, Current, Candidate), инсталлятор регистрирует установку в системе и предоставляет возможность обновления и удаления текущей установки.
Если MinGW ставится для работы с Code::Blocks, то при установке рекомендую выбрать версию «Candidate», а среди устанавливаемых компонентов должны быть обязательно отмечены «MinGW base tools», «g++ compiller» и «MinGW Make».

Способ 2 - Выкачать нужные пакеты с http://mingw.org вручную или воспользоваться архивами полученными при установки первым способом.
Приведу список файлов которые скачивает официальный установщик MinGW для версии Candidate:

gdb-6.8-mingw-3.tar.bz2
mingw32-make-3.81-2.tar.gz
binutils-2.18.50-20080109-2.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
w32api-3.13-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dev.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz

Не нужно даже прибегать к запуску инсталлятора, достаточно просто разархивировать все архивы в одну папку. Для распаковки можно воспользоваться замечательным бесплатным архиватором 7-zip (http://www.7-zip.org/).

И еще, отладчик gdb (который будет очень кстати при работе в среде Code::Blocks) придется качать отдельно в секции загрузки http://mingw.org

Способ 3 - Использовать заранее подготовленный пакет установки от сторонних разработчиков включающий все что требуется.
Вроде бы самый удобный способ. Но может так случиться, что однажды подготовленный пакет уже больше никогда не обновится и станет неприемлем для использования из-за неактуальных версий программ, библиотек и заголовочных файлов. Или же обновления этого пакета могут сильно задержаться.. :)

Примером может служить пакет MinGW С++ Toolbox предлагаемый (в связке с Code::Blocks ;) в качестве альтернативного инструментария для сборки и работы с движком рендеринга Ogre. Никаких специфических ограничений и заточек под Ogre в нем нет, и я давно использовал его просто как удобный «все-в-одном» инсталлятор MinGW. Все было замечательно. :) Но однажды случилось страшное.. В очередной раз решив собрать свежий Ogre, потыкать примеры и заставить себя чего-нибудь на нем слепить, я обнаружил что исходники относительно недавно вышедшего Ogre 1.6.2 у меня просто не собираются этим пакетом инструментов (требуется обновление w32api до версии 3.13). К слову, установка MinGW версии Candidate первым способом позволила решить эту проблему. ;) Хотя данный пакет в целом не плох и ранее всегда справлялся со своими задачами. Если требуется компактный инсталлятор со стабильным MinGW для общих задач, то можно со спокойной душой качать MinGW_Toolbox_Setup_wr1 c ogre3d.org. Будем наедятся что актуальная версия этого пакета появится в скором времени.

Если поискать, то в интернете, можно найти и другие сборки MinGW от энтузиастов. Как правило это просто само-распаковывающихся архивы.

Совсем недавно мне попалась альтернативная сборка последних версий GCC/Mingw32 - TDM-MinGW http://www.tdragon.net/recentgcc/
Она является неофициальной и, как заявляют разработчики, предназначена для экспериментальных целей. Но судя по всему ее можно использовать, если она не вызывает проблем в конкретном проекте. :) Я ее еще не испытывал на сборке крупных вещей, но со временем постараюсь это исправить.
Сборка имеет полноценный инсталлятор. При установки можно выбрать между стабильными и экспериментальными вариантами исполнительных фалов MinGW. Включает в себя все необходимое для сборки и отладки С++ проектов (make,gcc,gdb).
Из плюсов этой сборки несомненным является ее регулярное обновление.
Качать Bundled Installer. Размер около 26 MB.

Способ 4 - скачать среду разработки со встроенным MinGW. :)
Один самый ленивый способ, которым я пользовался когда-то давно. Я ставил Code::Blocks с MinGW в комплекте и накатывал ночные сборки поверх.
Из плюсов можно отметить что отпадает вопрос настройки среды разработки. :) Но в тоже время если поставить Qt Creator или старину wxDevCpp со встроенным MinGW и потом настроить использование его в Code::Blocks получится путаница и последующие лишние телодвижения при удалении и обновлении вышеупомянутых программ. Если в скачиваемой программе MinGW идет в комплекте и никому не мешает, то это прекрасно. Но для остальных программ лучше использовать отдельную инсталляцию MinGW в папку «c:\mingw», т.к. там они его буду искать в первую очередь.

Думаю на сегодня хватит про MinGW.

В ближайшее время постараюсь (как и обещал ранее) написать про установку ночных сборок Code::Blocks и их первичную настройку.

3 комментария:

  1. Пожалуй, не будет лишней следующая информация.
    Ни один из перечисленных способов заполучить MinGW, не даст вам компилятор в полном комплекте(Graphite, LTO, OpenMP, std_atomics, std_threads). Посему, четвертым способом является: http://code.google.com/p/mingw-builds/

    Спасибо.

    ОтветитьУдалить
  2. Спасибо. Всё очень доходчиво. Воспользуюсь при установке.

    PS
    Как я понимаю, MinGW никаких изменений в системе (системном реестре) не делает?

    ОтветитьУдалить
  3. Нужно в переменных среды к PATH добавить и адрес до make.exe
    Ибо ради него по большей части в вин-системах и устанавливают этот пакет.

    ОтветитьУдалить