Мингв-w64
Оригинальный автор(ы) | Программное обеспечение OneVision |
---|---|
Разработчик(и) | Кай Титц, Джонатан Йонг, различные GNU участники |
Первоначальный выпуск | 2005 г |
Стабильная версия | 11.0.1
/ 29 апреля 2023 г |
Репозиторий | НФ |
Написано в | С , С++ |
Операционная система | Microsoft Windows , Linux , MacOS |
Тип | Компилятор |
Лицензия | Общественное достояние (заголовки), Стандартная общественная лицензия GNU (компилятор и набор инструментов), Общественная лицензия Zope |
Веб-сайт | mingw-w64 |
Mingw-w64 — это с открытым исходным кодом бесплатный набор инструментов разработки , который генерирует двоичные файлы Portable Executable (PE) для Microsoft Windows . Он был разветвлен в 2005–2010 годах из MinGW ( Minimalist GNU для Windows ).
Mingw-w64 включает в себя порт коллекции компиляторов GNU (GCC), GNU Binutils для Windows ( ассемблер , компоновщик , менеджер архивов ), набор свободно распространяемых заголовочных файлов, специфичных для Windows , и библиотеки статического импорта для Windows API , встроенный для Windows версия GNU Project проекта GNU Debugger и другие утилиты.
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 передала код Каю Титцу, одному из своих ведущих разработчиков, при условии, что исходный код останется открытым. [ 1 ] Впервые он был представлен первоначальному проекту MinGW, но отказался из-за подозрения в использовании непубличной или частной информации. [ 2 ] [ 1 ] [ 3 ] По многим причинам ведущий разработчик и сооснователь проекта MinGW-w64 Кай Титц решил не предпринимать попыток дальнейшего сотрудничества с MinGW. [ 4 ]
MinGW-w64 обеспечивает более полную реализацию API Win32, [ 5 ] включая:
- Улучшенная C99 поддержка
- Поддержка потоков POSIX (pthreads) (включая возможность включения функций, связанных с потоками C++11, GCC в libstdc++ )
- GCC multilib, позволяющий пользователям параллельно устанавливать 32-битные и 64-битные библиотеки.
- Точка входа Unicode (wmain/wWinMain)
- DDK (из ReactOS )
- DirectX (из Wine )
- Поддержка больших файлов
- Win64 Поддержка
- Структурированная обработка исключений (SEH) вместо DWARF или sjlj на x86-64 (начиная с gcc 4.8+)
- Некоторые полезные инструменты, такие как
gendef
(улучшенная версия MinGWpexports
полезность) иwidl
( компилятор MIDL от Wine).
Кроме того, проект Mingw-w64 поддерживает winpthreads, библиотеку-оболочку, аналогичную pthreads-win32, с той основной разницей, что она позволяет GCC использовать ее в качестве библиотеки потоков, что приводит к созданию функциональных библиотек потоков C++11. <thread>
, <future>
, и <mutex>
.
МСИС2
[ редактировать ]MSYS2 («минимальная система 2») — это платформа распространения программного обеспечения и разработки для Microsoft Windows , основанная на Mingw-w64 и Cygwin , которая помогает развертывать код из мира Unix в Windows. Он играет ту же роль, что и старый MSYS в MinGW. [ 6 ]
MSYS2 разделяет эту цель по переносу кода Unix на машины Windows с несколькими другими проектами, в первую очередь Cygwin и Windows Subsystem for Linux (WSL). WSL позволяет запускать двоичные файлы ELF Linux в Windows через управляемую виртуальную машину . Cygwin предоставляет полную среду POSIX (в виде Windows DLL ), в которой приложения, скомпилированные как Windows EXE, запускаются так же, как и в Unix. [ 7 ]
Вместо того, чтобы предоставлять полную среду, как это делает Cygwin, MSYS2 ставит перед собой задачу стать платформой для разработки и развертывания. [ 8 ]
- Существует основная среда MSYS2 (похожая на код эмуляции Cygwin и фактически полученная из него) с менеджером пакетов и стандартным системным инструментом Unix. Таким образом, при управлении самим MSYS2 можно использовать стандартные инструменты Unix без изменений, используя эмулируемую среду. Также можно установить инструменты сборки в эмулируемой среде MSYS2, если пользователь хочет создать программное обеспечение, которое зависит от уровня эмуляции POSIX вместо собственного API.
- Кроме того, предоставляются четыре среды, содержащие собственные компиляторы, инструменты сборки и библиотеки, которые можно напрямую использовать для создания собственных 32- или 64-разрядных программ Windows. Окончательные программы, созданные с использованием двух собственных сред, не используют никакой эмуляции и могут запускаться или распространяться как собственные программы Windows. Это MINGW64 и MINGW32 (исходные среды MinGW-w64, использующие gcc, msvcrt и libstdc++), UCRT64 (адаптация MINGW64 к ucrt) и CLANG64 (адаптация UCRT64 к clang и libc++). Хотя Cygwin также предоставляет компиляторы и библиотеки MinGW-w64, набор доступных библиотек меньше, и ими не так легко управлять, поскольку они не размещаются в отдельных префиксах.
Основная среда MSYS2 предоставляет менеджер пакетов ( Pacman из Arch Linux ), оболочку bash и другие программы Unix . Он использует библиотеку времени выполнения msys-2.0.dll (~20 МБ), созданную на основе библиотеки Cygwin cygwin1.dll и регулярно обновляемую для отслеживания развития Cygwin. Он задуман как среда разработки, которой разработчики могут управлять (с помощью pacman) и запускать свои инструменты. Функции, которые были сочтены ненужными для разработки, удалены. [ 8 ]
Как и Cygwin, MSYS2 поддерживает преобразование путей для программного обеспечения, отличного от MSYS2, запускаемого из него. Например, можно использовать команду notepad++ /c/Users/John/file.txt
запустить редактор, который откроет файл с путем Windows C:\Users\John\file.txt
. [ 9 ] [ 8 ]
MSYS2 и его среда bash используются Git и GNU Octave в качестве официального дистрибутива Windows.
Компилятор
[ редактировать ]Большинство языков, поддерживаемых GCC, также поддерживаются портом Mingw-w64. К ним относятся C, C++ , Objective-C , Objective-C++, Fortran и Ada . Используются библиотеки времени выполнения GCC (libstdc++ для C++, libgfortran для Fortran и т. д.). Пакет clang LLVM для mingw-w64 также предоставляется MSYS2. Он поддерживает ARM для Windows ( aarch64-w64-mingw32
и armv7-w64-mingw32
). [ 10 ] [ 11 ]
Двоичные файлы (исполняемые файлы или библиотеки DLL), созданные с помощью разных компиляторов C++ (например, Mingw-w64 GCC и Visual Studio), как правило, несовместимы по ссылкам из-за использования разных ABI и схем искажения имен , вызванных различиями в средах выполнения C++. Однако скомпилированный код C совместим по ссылкам. [ 12 ] Clang является исключением, поскольку он в основном поддерживает C++ ABI MSVC в Windows. [ 13 ]
В документации binutils содержится актуальная информация о работе с различными форматами, специфичными для Windows, и специальные инструменты для этого. [ 14 ] [ 15 ]
Ссылки
[ редактировать ]- ^ Перейти обратно: а б «(MinGW-w64) История» . MinGW-w64 Wiki . Архивировано из оригинала 5 июля 2019 г. Проверено 18 февраля 2016 г.
- ^ Дэнни Смит (13 августа 2007 г.). «Re: Подпроект для заголовка и crt w64» . Группа новостей : comp.gnu.mingw.devel . Usenet: 000001c7dd83$9ae74310$fe6d65da@THOMAS . Архивировано из оригинала 23 июля 2020 года . Проверено 23 июля 2020 г.
Беглая выборочная проверка нескольких файлов показала, что источники crt, в частности, содержат слишком много недокументированного материала, который, как я подозреваю, может быть получен из частных источников. С тех пор я избегал просмотра исходников mingw-w64, чтобы избежать каких-либо намеков на нарушение авторских прав. Я вполне могу ошибаться, но я предпочел бы быть в безопасности, чем ставить под угрозу будущее mingw32, который пытался поддерживать этику «чистой комнаты» во время своей разработки.
- ^ Маршалл, Кейт (19 июля 2009 г.). «Re: Гармонизация mingwrt/w32api с mingw-w64» . MinGW-dvlpr (список рассылки). Архивировано из оригинала 28 января 2020 года . Проверено 12 июня 2014 г.
Однако нам потребуется формальный аудит кода mingw-64, чтобы гарантировать соответствие нашим требованиям к действительно открытой документации источников, прежде чем [слияние mingw-w64] может быть завершено.
- ^ Титц, Кай (20 июля 2014 г.). «Re: Гармонизация mingwrt/w32api с mingw-w64» . MinGW-dvlpr (список рассылки). Архивировано из оригинала 28 января 2020 года . Проверено 12 июня 2014 г.
- ^ «МинГВ-w64» . MinGW-w64.org. Архивировано из оригинала 18 октября 2019 года . Проверено 30 мая 2013 г.
- ^ «МСИС2» . www.msys2.org . Архивировано из оригинала 07 февраля 2021 г. Проверено 30 сентября 2022 г.
- ^ «ZSH в Windows через MSYS2» . 26 июля 2018 г. Архивировано из оригинала 28 января 2020 г. . Проверено 30 января 2020 г.
- ^ Перейти обратно: а б с «Чем MSYS2 отличается от Cygwin · msys2/Msys2 Wiki» . Архивировано из оригинала 15 февраля 2023 г. Проверено 20 февраля 2023 г.
- ^ Бисвас, Суприйо (29 апреля 2017 г.). «Как получить среду Unix/Linux в Windows с помощью MSYS2» . Булев мир . Архивировано из оригинала 30 сентября 2022 г. Проверено 30 сентября 2022 г.
- ^ «Пакет: mingw-w64-x86_64-clang» . Пакеты MSYS2 . Архивировано из оригинала 30 октября 2020 года . Проверено 12 февраля 2020 г.
- ^ Стуршё, Мартин (23 апреля 2020 г.). "mstorsjo/llvm-mingw" . Гитхаб . Архивировано из оригинала 29 ноября 2020 года . Проверено 27 апреля 2020 г.
- ^ «Взаимодействие библиотек, созданных компиляторами разных производителей» . mingw.org . Архивировано из оригинала 30 ноября 2020 г. Проверено 30 сентября 2022 г.
- ^ «Совместимость MSVC» . Документация Clang 11 . Архивировано из оригинала 26 января 2021 г. Проверено 12 февраля 2020 г.
- ^ «лд: Win32» . исходное программное обеспечение.org . Архивировано из оригинала 14 февраля 2020 г. Проверено 10 февраля 2020 г.
- ^ «Документация по двоичным утилитам GNU» . исходное программное обеспечение.org . Архивировано из оригинала 19 февраля 2020 г. Проверено 10 февраля 2020 г.