Итак, я читал в Интернете, но я все еще очень растерялся. Я понимаю, что в мире Linux -on- Windows есть разные инструменты: Msys, Msys2, Cygwin, Mingw и Mingw-64.
Вот что я знаю, и, пожалуйста, поправьте меня если я не прав:
Mingw стремится быть просто портом программ G CC для Windows. Он создает собственные Windows двоичные файлы и все.
Mingw-64 - это более свежая и лучше поддерживаемая версия Mingw, которая также поддерживает Windows 64 бит.
Cygwin, включая Mingw (?) Для поддержки G CC на Windows, обеспечивает уровень совместимости POSIX через DLL, с которой все программы связаны по умолчанию.
MSYS - это ветвь Cygwin, но она отбрасывает некоторые усилия по совместимости с POSIX. Вместо этого он в основном направлен на создание собственной программы Windows. Но они все равно будут зависеть от наличия библиотеки MSYS.
MSYS2 - это более свежая и активная версия менее активного MSYS.
Это все правда? Если это так, вот что я хочу проверить:
По сути, я думаю, что все, что мне нужно для моей разработки, это Mingw, чтобы использовать G CC для создания собственных Windows приложений. Мне не нужен слой POSIX, и я не хочу, чтобы моя программа зависела от каких-либо библиотек DLL, кроме тех, которые в любом случае присутствуют в Windows системах. Насколько я понимаю, это то, что предлагает Mingw.
Однако каким-то образом мне удалось установить MSYS (или MSYS2? Я больше не уверен) в моей системе. Учебник, которому я следовал ранее, предложил сделать это.
Поскольку кажется, что MSYS (2) включает в себя Mingw под C:\msys64\mingw64
, я просто использую двоичные файлы Mingw непосредственно из CMD Windows, не проходя через MSYS 2) оболочка программы. Например, я просто добавил C:\msys64\mingw64\bin
в PATH
и запускаю gcc
из CMD Windows напрямую для компиляции моего проекта.
Это правильный способ использовать Mingw? Или я должен столкнуться с проблемами?
Создает ли этот подход чистые Windows собственные двоичные файлы, которые никогда не должны зависеть ни от какой DLL-библиотеки, связанной с MSYS (2)?
Правда ли, что функциональность и зависимости, связанные с MSYS (2), вступают в действие только в том случае, если я запускаю программы Mingw (например, G CC) через программу оболочки msys2.exe ? И поэтому, если я хочу избежать каких-либо вещей, связанных с MSYS (2) или Cygwin, и просто использовать чистый Mingw G CC, будет ли правильным подход просто запустить G CC непосредственно в каталоге Mingw, как описано ранее?
Обновление: Сейчас я проверил с помощью Dependency Walker, и при запуске C:\msys64\mingw64\bin\gcc
из оболочки MSYS2 все еще создается .exe
без особых зависимостей (что хорошо) , Так что же это за msys-2.0.dll
, о котором говорят документы MSYS2? И как использование MSYS2 для компиляции C отличается от использования Mingw?