Mingw-w64 - Mingw-w64
Оригинальный автор (ы) | Программное обеспечение OneVision |
---|---|
Разработчики) | Кай Тиц, Джонатан Йонг, различные участники GNU |
изначальный выпуск | 2005 |
Стабильный выпуск | 8.0.0[1] / 18 сентября 2020 г. |
Написано в | C, C ++ |
Операционная система | Майкрософт Виндоус, Linux, macOS |
Тип | Компилятор |
Лицензия | Всеобщее достояние (заголовки), Стандартная общественная лицензия GNU (компилятор и набор инструментов), Zope Public License |
Интернет сайт | mingw-w64 |
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] включая:
- Лучше C99 поддерживать
- Потоки POSIX (pthreads) поддержка (включая возможность включения C ++ 11 связанные с потоками функциональные возможности в GCC libstdc ++ )
- GCC Multilib, который позволяет пользователям устанавливать 32-битные и 64-битные библиотеки параллельно
- Unicode точка входа (wmain / wWinMain)
- DDK (из ReactOS )
- DirectX (из Вино )
- Поддержка больших файлов
- Win64 поддерживать
- Структурированная обработка исключений (SEH) вместо DWARF или же sjlj на x86-64 (начиная с gcc 4.8+)
- Некоторые полезные инструменты, такие как
Gendef
(улучшенная версия MinGW'spexports
полезность), иWidl
(ан MIDL компилятор из Wine).
Кроме того, проект 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]
Рекомендации
- ^ "Анонс v8.0.0". Списки рассылки MinGW-w64 SourceForge. Получено 2020-11-26.
- ^ "(MinGW-w64) История". MinGW-w64 вики. Получено 2016-02-18.
- ^ Дэнни Смит (13 августа 2007 г.). "Re: Подпроект для заголовка w64 и crt". Группа новостей: comp.gnu.mingw.devel. Usenet: 000001c7dd83 $ 9ae74310 $ fe6d65da @ THOMAS. Получено 23 июля 2020.
Беглая выборочная проверка нескольких файлов показывает, что источники crt, в частности, содержат слишком много недокументированного материала, который, как я подозреваю, может быть получен из закрытых источников. С тех пор я избегал смотреть исходники mingw-w64, чтобы избежать каких-либо признаков нарушения авторских прав. Я вполне мог ошибаться, но я предпочел бы быть в безопасности, чем подвергать опасности будущее mingw32, который пытался поддерживать этику «чистой комнаты» во время своего развития.
- ^ "(MinGW-w64) История". MinGW-w64 вики. Получено 2016-02-18.
- ^ Маршалл, Кит (19 июля 2009 г.). "Re: Согласование mingwrt / w32api с mingw-w64". MinGW-dvlpr (Список рассылки). Получено 12 июн 2014.
Однако нам потребуется формальный аудит кода mingw-64, чтобы обеспечить соответствие нашим требованиям к действительно открытой документации источников, прежде чем [слияние mingw-w64] может быть завершено.
- ^ Тиц, Кай (20 июля 2014 г.). "Re: Согласование mingwrt / w32api с mingw-w64". MinGW-dvlpr (Список рассылки). Получено 12 июн 2014.
- ^ "MinGW-w64". MinGW-w64.org. Получено 30 мая 2013.
- ^ MSYS2: официальная домашняя страница, репозиторий кода
- ^ https://medium.com/@borekb/zsh-via-msys2-on-windows-3964a943b1ce
- ^ а б c https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-from-Cygwin
- ^ Пример взят из обзорной статьи https://www.booleanworld.com/get-unix-linux-environment-windows-msys2
- ^ «Пакет: mingw-w64-x86_64-clang». Пакеты MSYS2. Получено 12 февраля 2020.
- ^ Стуршё, Мартин (23 апреля 2020 г.). "mstorsjo / llvm-mingw".
- ^ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
- ^ «Совместимость с MSVC». Документация Clang 11.
- ^ "ld: win32". sourceware.org.
- ^ "Документация по бинарным утилитам GNU". sourceware.org.