Подтвердить что ты не робот

Простое объяснение того, что такое MinGW

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

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

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

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

Простое объяснение, затрагивающее эти области, было бы полезно.

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

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

4b9b3361

Ответ 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)