Простое объяснение того, что такое MinGW - PullRequest
38 голосов
/ 17 октября 2011

Я заядлый пользователь Python, и мне кажется, что для компиляции некоторых библиотек мне нужно установить MinGW на мой компьютер с Windows.Я немного запутался по поводу MinGW и GCC.Вот мой вопрос (с реальной фиктивной точки зрения):

Итак, Python - это язык, который интерпретируется и компилируется.Существуют реализации Python для Linux и Windows, которые просто устанавливают и используют двоичный файл для выполнения своего кода.Они поставляются в комплекте с кучей встроенных библиотек, которые вы можете использовать.То же самое и с Ruby из того, что я прочитал.

Теперь я сделал небольшой кусочек C и знаю, что у него есть a для его компиляции.Он имеет свои встроенные библиотеки, которые называются заголовочными файлами, которые вы можете использовать.Теперь, в школьные дни, C писал код в ID-среде, похожей на vi, называемой Turbo-C, а затем нажимал клавишу F9 для его компиляции.На этом мое образование C заканчивается.

Что такое MinGW и GCC?Я в основном работал над системами Windows и даже недавно начал использовать Cygwin.Разве они не одинаковы?

Простое объяснение попадания в эти области было бы полезно.

(Мои извинения, если этот пост звучит глупо / глупо. Я думал, что спрошу здесь. Игнорируя этиосновные биты никогда не делали кого-либо лучшим программистом.)

Спасибо всем.

Ответы [ 5 ]

25 голосов
/ 17 октября 2011

MinGW - это полный набор инструментов GCC (включая полдюжины веб-интерфейсов, таких как C, C ++, Ada, Go и еще много чего) для платформы Windows, который компилируется и связывается с компонентом ОС Windows C Runtime Library в msvcrt.dll,Скорее он пытается быть минимальным (отсюда и название).

Это означает, что, кроме Cygwin, MinGW не не пытается предложить полный слой POSIX поверхWindows, но, с другой стороны, он не требует, чтобы вы связывались со специальной библиотекой совместимости.
Поэтому он также не не имеет никаких последствий для лицензии GPL для программ, которые вы пишете (заметное исключение: профилированиебиблиотеки, но вы обычно не будете распространять их, так что это не имеет значения).

Более новый MinGW-w64 поставляется с примерно 99% полной привязкой Windows API (исключая ATL и тому подобное), включая поддержку x64 и экспериментальные реализации ARM,Иногда вы можете найти некоторую экзотическую константу неопределенной, но для того, что 99% людей используют 99% времени, она просто отлично работает.

Вы также можете использовать большую часть того, что есть в POSIX, до тех пор, покакак это реализовано в той или иной форме под Windows.Одна из основных особенностей POSIX, которая не работает с MinGW, - это fork, просто потому, что в Windows такого нет (Cygwin испытывает большие трудности при его реализации).
Есть несколько других незначительных вещей, нов общем, большинство вещей в любом случае работают.

Итак, в очень очень упрощенном предложении: MinGW (-w64) - это «вещь без компиляции излишеств», которая позволяет вам писать собственные двоичные исполняемые файлы для Windows,не только в C и C ++, но и в других языках.

10 голосов
/ 17 октября 2011

Для компиляции C-программы вам потребуется C-реализация для вашего конкретного компьютера.

C-реализации состоят, в основном, из компилятора (его препроцессор и заголовки) и библиотеки (готовыйготовый исполняемый код).

На компьютере с установленной Windows библиотека, содержащая большую часть готового исполняемого кода, несовместима с компилятором gcc ... поэтому для использования этого компилятора в Windows вам потребуетсядругая библиотека: туда входит MinGW.MinGW предоставляет, помимо прочего, библиотеку (и), необходимую для создания реализации C, вместе с gcc.


Библиотека Windows и MSVC вместе создают различную реализацию.

3 голосов
/ 17 октября 2011

MinGW - это реализация большинства утилит сборки GNU, таких как gcc и make для windows, в то время как gcc является только компилятором.Cygwin - это более крупный и сложный пакет, который устанавливает намного больше, чем MinGW.

2 голосов
/ 17 октября 2011

MinGW - это набор инструментов разработки, который содержит GCC (среди прочих), а GCC - это компилятор C в этом наборе.

0 голосов
/ 24 мая 2016

Единственной причиной существования MinGW является предоставление среды, похожей на linux, для разработчиков, не способных использовать собственные инструменты Windows.Он почти во всех отношениях уступает слишком сложным цепочкам Microsoft на платформах Win32 / Win64, НО обеспечивает среду, в которой разработчику linux не нужно учиться чему-то новому, И он / она может компилировать код linux практически без изменений.Это сомнительный подход, но многие люди считают это удобство более важным, чем другие аспекты разработки.Он не имеет ничего общего с C или C ++, как указывалось в предыдущих ответах, он имеет все, что нужно среде разработчика.Аргумент о GNU toolchains для windows и его несессетах, это всего лишь аргумент

GCC - компилятор unix / linux, MinGW - приближение GCC к среде Windows, компилятор Microsoft и компилятор Intel - больше похоже на именапредложить (оба производят намного, намного лучшие программы для Windows, чем MinGW, кстати)

...