MSYS и UNIX-подобные системы сборки отдельно; почему Mingw существует? Я имею в виду, почему win32/64 не является еще одной целью, доступной в «ванильном GCC»? Есть ли для этого технические причины или они «политические»? Мне кажется, что в платформе Windows нет ничего особенного, что сделало бы перенос на нее GCC «несовместимым» с оригинальным GCC.
Почему Mingw существует?
Ответы (4)
Mingw — это не только компиляторы, но и библиотеки и заголовочные файлы (и любые другие вспомогательные файлы, которые вам могут понадобиться).
GCC - это просто компилятор. Mingw — это полноценная среда.
MingW предназначен для простого переноса приложений Posix на Windows. Это просто «более тонкий» слой, чем CygWin, поэтому не все может работать там, где слишком разные окна. CygWin позволяет обеспечить достаточную изоляцию, чтобы запускались даже инструменты сценариев для создания и генерации кода.
Редактировать: Microsoft очень любит создавать собственные стандарты и хочет размещать собственный бренд на вещах, для которых уже существуют открытые стандарты. то есть OpenGL -> DirectX, Java -> .net, OpenCL — это следующий стандарт, от которого они хотят отказаться. Это делает их немного болезненными для не спонсируемых проектов, чтобы поддержать их в качестве цели. Они всегда отказывались от всего, что позволяет легко кросс-платформенную разработку, потому что они хотят, чтобы вы разрабатывали свое приложение только для этой ОС. Это маркетинговая стратегия, контролировать бренд, контролировать платформу и делать так, чтобы людям было больно поддерживать другие операционные системы. MingW требуется, потому что GCC может генерировать код x86, но даже самая базовая поддержка времени выполнения отличается от операционных систем на основе Posix.
ну, хотя вы можете использовать кросс-компилятор для создания бинарных кодов win32/64 из GCC, кто-то должен портировать все библиотеки времени выполнения C. И Mingw, и Cygwin созданы для этой цели.
С основного сайта MinGW
Предлагаемый в легко устанавливаемом формате двоичного пакета для собственного развертывания в MS-Windows или созданный пользователем из исходного кода для межхостингового использования в Unix или GNU/Linux, пакет использует стандартные системные библиотеки Microsoft для обеспечения C-Runtime и Windows. API.