Простое объяснение того, что такое MinGW
Я - жадный пользователь Python, и кажется, что я хочу, чтобы MinGW был установлен на моей машине Windows для компиляции некоторых библиотек. Я немного запутался в MinGW и GCC. Здесь мой вопрос (с реальной фиктивной точки зрения):
Итак, Python - это язык, который интерпретируется и компилируется. Существуют версии Linux и Windows для Python, которые просто устанавливают и используют двоичный код для выполнения его кода. Они поставляются в комплекте с кучей встроенных библиотек, которые вы можете использовать. То же самое с Ruby от того, что я читал.
Теперь я сделал небольшой бит C, и я знаю, что его нужно скомпилировать. Он имеет встроенные библиотеки, которые, как представляется, называются заголовочными файлами, которые вы можете использовать. Теперь, в школьный день, C, писал код в vi-like IDE под названием Turbo-C, а затем ударил F9, чтобы скомпилировать его. Это в значительной степени, где заканчивается мое образование C.
Что такое MinGW и что такое GCC? Я работал в основном в системах Windows и даже недавно начал использовать Cygwin. Разве они не те же?
Простое объяснение, затрагивающее эти области, было бы полезно.
(Мои извинения, если этот пост звучит глупо/глупо. Я думал, что попрошу здесь. Игнорирование этих основных бит никогда не делало кого-либо лучшим программистом.)
Спасибо всем.
Ответы
Ответ 1
MinGW - это полный набор инструментов GCC (включая полдюжины интерфейсов, таких как C, С++, Ada, Go и многое другое) для платформы Windows, которая компилирует и связывает с компонентом среды Windows C Runtime Library в msvcrt.dll, Скорее он пытается быть минимальным (отсюда и название).
Это означает, что, помимо Cygwin, MinGW не пытается предложить полный уровень POSIX поверх Windows, но, с другой стороны, он не требует ссылки на специальную библиотеку совместимости.
Поэтому он также не имеет никаких последствий GPL-лицензии для программ, которые вы пишете (заметное исключение: профилирующие библиотеки, но вы обычно не будете распространять их, чтобы это не имело значения).
Более новый MinGW-w64 поставляется с 99% полной привязкой Windows API (за исключением ATL и т.д.), включая поддержку x64 и экспериментальные реализации ARM. Иногда вы можете найти некоторую экзотическую константу undefined, но для 99% людей используют 99% времени, она просто отлично работает.
Вы также можете использовать большую часть того, что в POSIX, если оно реализовано в некоторой форме под Windows. Одна из основных задач POSIX, которая не работает с MinGW, - это fork
, просто потому, что в Windows нет такой вещи (Cygwin испытывает много боли, чтобы ее реализовать).
Есть еще несколько второстепенных вещей, но в целом, большинство вещей в любом случае.
Итак, в очень очень упрощенном предложении: MinGW (-w64) - это "компилятор без компромиссов", который позволяет писать собственные исполняемые файлы для Windows, а не только на языках C и С++, но и на других языках.
Ответ 2
Для компиляции программы C вам понадобится реализация C для вашего конкретного компьютера.
Реализации C состоят, в основном, из компилятора (его препроцессора и заголовков) и библиотеки (готовый исполняемый код).
На компьютере с установленной Windows библиотека, которая содержит наиболее готовый исполняемый код, несовместима с gcc
компилятором... поэтому для использования этого компилятора в Windows вам нужна другая библиотека: где MinGW
вводит, MinGW
предоставляет, между прочим, библиотеку (и), необходимую для реализации C вместе с gcc
.
Библиотека Windows и MSVC совместно выполняют другую реализацию.
Ответ 3
MinGW - это набор средств разработки, который содержит GCC (среди прочих), а GCC - компилятор C в этом пакете.
Ответ 4
MinGW - это реализация большинства утилит построения GNU, таких как gcc и make на окнах, а gcc - только компилятор. Cygwin - это намного больший и сложный пакет, который устанавливает намного больше, чем MinGW.
Ответ 5
Единственная причина существования MinGW - предоставить Linux-подобную среду для разработчиков, не способных использовать собственные средства Windows. Он почти во всех отношениях относится к Microsoft tooolchains на платформах Win32/Win64, но он обеспечивает среду, в которой разработчику Linux не нужно ничего узнавать. И он может скомпилировать Linux-код почти без изменений. Это сомнительный подход, но многие люди считают это удобство более важным, чем другие аспекты развития.
Это не имеет ничего общего с C или С++, как было указано в более ранних ответах, оно имеет все, что связано с желанием разработчика среды. Аргумент о GNU toolchains на окнах и его nessessety, это просто - аргумент
GCC - компилятор unix/linux,
MinGW - приближение GCC к среде Windows,
Компилятор Microsoft и компилятор Intel - больше похожи на имена (обе дают гораздо лучшие программы в Windows, а затем MinGW, btw)