Mingw-w64 - Mingw-w64

MinGW-w64
Оригинальный автор (ы)Программное обеспечение OneVision
Разработчики)Кай Тиц, Джонатан Йонг, различные участники GNU
изначальный выпуск2005; 15 лет назад (2005)
Стабильный выпуск
8.0.0[1] / 18 сентября 2020 г.; 2 месяца назад (2020-09-18)
Написано вC, C ++
Операционная системаМайкрософт Виндоус, Linux, macOS
ТипКомпилятор
ЛицензияВсеобщее достояние (заголовки), Стандартная общественная лицензия GNU (компилятор и набор инструментов), Zope Public License
Интернет сайтmingw-w64.org

Mingw-w64 это бесплатный и открытый исходный код разработка программного обеспечения среда для создания Майкрософт Виндоус PE Приложения. Он был разветвлен в 2005–2008 годах из MinGW (Минималистичный GNU для Windows).

Mingw-w64 включает в себя порт из Коллекция компиляторов GNU (GCC), GNU Binutils для Windows (ассемблер, компоновщик, менеджер архива ), набор свободно распространяемых Windows-специфичных файлы заголовков и статические библиотеки импорта которые позволяют использовать Windows API, собственная сборка Windows Проект GNU с Отладчик GNU, и разные утилиты.

Mingw-w64 может быть запущен либо на собственной платформе Microsoft Windows, либо на кросс-хостинге Linux (или другой Unix), или "кросс-родной" на MSYS2 или же Cygwin. Mingw-w64 может генерировать 32-битные и 64-битные исполняемые файлы для x86 под целевыми именами i686-w64-mingw32 и x86_64-w64-mingw32.

История

В 2005 году Mingw-w64 был создан OneVision Software под дизайн чистой комнаты принципов, поскольку исходный проект MinGW не предлагал обновить свою кодовую базу, включая включение нескольких ключевых новых API и столь необходимую поддержку 64-битных систем. В 2008 году OneVision передала код Кай Тиц, одному из своих ведущих разработчиков, при условии, что он останется открытым.[2] Сначала он был отправлен в исходный проект MinGW, но отказался по подозрению в использовании закрытой или частной информации.[3][4][5] По многим причинам ведущий разработчик и соучредитель проекта MinGW-w64 Кай Тиц решил не предпринимать дальнейших попыток сотрудничества с MinGW.[6]

MinGW-w64 предоставляет более полную реализацию Win32 API,[7] включая:

Кроме того, проект Mingw-w64 поддерживает winpthreads, библиотека оболочки похож на pthreads-win32, с тем основным отличием, что он позволяет GCC использовать его как библиотеку потоков, что приводит к функциональным библиотекам потоков C ++ 11 <thread>, <future>, и <mutex>.

MSYS2

MSYS2 («минимальная система 2») - это дистрибутив программного обеспечения и платформа разработки для Майкрософт Виндоус, на основе Mingw-w64 и Cygwin, который помогает развернуть код из Unix мир в Windows.[8]

MSYS2 разделяет эту цель по переносу кода Unix на машины Windows с несколькими другими проектами, в первую очередь Cygwin и Подсистема Windows для Linux (WSL). WSL позволяет Linux ELF двоичные файлы работают в Windows с ограниченной поддержкой вызовов ядра и значительными ограничениями в графических приложениях. Cygwin предоставляет полный POSIX среда (как окна DLL ), в которых приложения, скомпилированные как Windows EXE, работают так же, как и в Unix.[9]

Вместо того, чтобы предоставлять полную среду, как это делает Cygwin, MSYS2 ставит перед собой задачу стать платформой для разработки и развертывания.[10] MSYS2 устанавливает 3 набора сред, каждый с отдельным набором программ и библиотек. Два из них, называемые 32-битным MinGW-w64 и 64-битным MinGW-w64, просто состоят из собственных компиляторов, инструментов сборки и библиотек, которые можно напрямую использовать для сборки 32-битных или 64-битных программ Windows. Последние программы, созданные с использованием двух собственных сред, не используют никакой эмуляции и могут запускаться или распространяться как собственные программы Windows. Третья установленная среда, называемая MSYS2, вместо этого предоставляет эмулированную среду POSIX, такую ​​как Cygwin, с диспетчером пакетов и стандартными инструментами системы Unix. Таким образом, при управлении самим MSYS2 стандартные инструменты Unix могут использоваться без изменений с помощью эмулированной среды. Также можно установить инструменты сборки в эмулируемой среде MSYS2, если пользователь хочет создать программное обеспечение, которое зависит от уровня эмуляции POSIX, а не от собственного API.

Основная среда MSYS2 предоставляет менеджер пакетов (Pacman из Arch Linux ), а оболочка bash, и другие Unix программы. Он использует библиотеку времени выполнения msys-2.0.dll (~ 20 МБ), полученный из библиотеки Cygwin cygwin1.dll, и регулярно обновляется, чтобы отслеживать развитие Cygwin. Он задуман как среда разработки, которой разработчики могут управлять (используя pacman) и запускать свои инструменты. Функции, признанные ненужными для разработки, удаляются.[10]

Как и Cygwin, MSYS2 поддерживает преобразование пути для запущенного из него программного обеспечения, отличного от MSYS2. Например, можно использовать команду блокнот ++ /c/Users/John/file.txt для запуска редактора, который откроет файл с путем Windows C: Users John file.txt.[11][10]

MSYS2 и его среда bash используются Git и GNU Octave для их официального дистрибутива Windows.

Компилятор

Большинство языков, поддерживаемых GCC, также поддерживаются портом Mingw-w64. К ним относятся C, C ++, Цель-C, Objective-C ++, Фортран, и Ада. Используются библиотеки времени выполнения GCC (libstdc ++ для C ++, libgfortran для Fortran и т. Д.). Упаковка LLVM clang для mingw-w64 также предоставляется MSYS2. Он поддерживает ARM для Windows (aarch64-w64-mingw32 и armv7-w64-mingw32).[12][13]

Двоичные файлы (исполняемые файлы или библиотеки DLL), созданные с помощью различных компиляторов C ++ (например, Mingw-w64 GCC и Visual Studio), как правило, не совместимы по ссылкам из-за использования разных ABI и искажение имени схемы, вызванные различиями в средах выполнения C ++. Однако скомпилированный код C совместим по ссылкам.[14] Clang является исключением, поскольку он в основном поддерживает MSVC C ++ ABI в Windows.[15]

В binutils документация содержит актуальную информацию о работе с различными форматами, специфичными для Windows, и специальные инструменты для этого.[16][17]

Рекомендации

  1. ^ "Анонс v8.0.0". Списки рассылки MinGW-w64 SourceForge. Получено 2020-11-26.
  2. ^ "(MinGW-w64) История". MinGW-w64 вики. Получено 2016-02-18.
  3. ^ Дэнни Смит (13 августа 2007 г.). "Re: Подпроект для заголовка w64 и crt". Группа новостейcomp.gnu.mingw.devel. Usenet:  000001c7dd83 $ 9ae74310 $ fe6d65da @ THOMAS. Получено 23 июля 2020. Беглая выборочная проверка нескольких файлов показывает, что источники crt, в частности, содержат слишком много недокументированного материала, который, как я подозреваю, может быть получен из закрытых источников. С тех пор я избегал смотреть исходники mingw-w64, чтобы избежать каких-либо признаков нарушения авторских прав. Я вполне мог ошибаться, но я предпочел бы быть в безопасности, чем подвергать опасности будущее mingw32, который пытался поддерживать этику «чистой комнаты» во время своего развития.
  4. ^ "(MinGW-w64) История". MinGW-w64 вики. Получено 2016-02-18.
  5. ^ Маршалл, Кит (19 июля 2009 г.). "Re: Согласование mingwrt / w32api с mingw-w64". MinGW-dvlpr (Список рассылки). Получено 12 июн 2014. Однако нам потребуется формальный аудит кода mingw-64, чтобы обеспечить соответствие нашим требованиям к действительно открытой документации источников, прежде чем [слияние mingw-w64] может быть завершено.
  6. ^ Тиц, Кай (20 июля 2014 г.). "Re: Согласование mingwrt / w32api с mingw-w64". MinGW-dvlpr (Список рассылки). Получено 12 июн 2014.
  7. ^ "MinGW-w64". MinGW-w64.org. Получено 30 мая 2013.
  8. ^ MSYS2: официальная домашняя страница, репозиторий кода
  9. ^ https://medium.com/@borekb/zsh-via-msys2-on-windows-3964a943b1ce
  10. ^ а б c https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-from-Cygwin
  11. ^ Пример взят из обзорной статьи https://www.booleanworld.com/get-unix-linux-environment-windows-msys2
  12. ^ «Пакет: mingw-w64-x86_64-clang». Пакеты MSYS2. Получено 12 февраля 2020.
  13. ^ Стуршё, Мартин (23 апреля 2020 г.). "mstorsjo / llvm-mingw".
  14. ^ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
  15. ^ «Совместимость с MSVC». Документация Clang 11.
  16. ^ "ld: win32". sourceware.org.
  17. ^ "Документация по бинарным утилитам GNU". sourceware.org.

внешняя ссылка