Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
msys2_mingw [2020/07/30 15:04] – [Введение] admin | msys2_mingw [2022/02/01 01:05] – admin |
---|
==== Введение ==== | ==== Введение ==== |
| |
Иногда возникает желание "что-нибудь скомпилировать под Windows". Ага, ага. Вот и у меня однажды возникала | В целях ретрокомпьютинга иногда возникает желание "что-нибудь скомпилировать под 32-битный Windows". Ага, ага. Вот и у меня однажды возникала |
такая же ситуация. Когда-то давно мне довелось пользоваться компилятором **[[https://ru.wikipedia.org/wiki/MinGW|Mingw]]** и оболочкой **MSYS**, так что я попробовал их найти и установить. Оказалось, что там "всё не так, как раньше". | такая же ситуация. Когда-то мне довелось пользоваться компилятором **[[https://ru.wikipedia.org/wiki/MinGW|Mingw]]** и оболочкой **MSYS**, так что я попробовал их найти и установить. Оказалось, что там "всё не так, как раньше". |
Вобщем, сейчас ситуация такая: "простой" MinGW и "классический" MSYS обновляться перестали | Вобщем, сейчас ситуация такая: "простой" MinGW и "классический" MSYS обновляться перестали |
и они зачахли где-то в районе 2015. | и они зачахли где-то в районе 2015. |
**ПРИМЕЧАНИЕ:** Надеюсь, читатели понимают разницу между **[[https://ru.wikipedia.org/wiki/Cygwin|Cygwin]]** и **[[https://ru.wikipedia.org/wiki/MinGW|Mingw]]**. Кратко: **Cygwin** пытается воссоздать наиболее полную "среду" UNIX/POSIX на Windows, со всеми её фишками, типа //fork()//, особенностей файловой системы, сигналами, псевдотерминалами и т.д. в то время как **Mingw** - это (изначально) просто перенос компилятора **GCC** на Windows, без вот этого всего. А **MSYS** - это набор утилит для сборки, главные из которых - пожалуй ''make'' и ''bash''. [[https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-from-Cygwin|Подробности]]. | **ПРИМЕЧАНИЕ:** Надеюсь, читатели понимают разницу между **[[https://ru.wikipedia.org/wiki/Cygwin|Cygwin]]** и **[[https://ru.wikipedia.org/wiki/MinGW|Mingw]]**. Кратко: **Cygwin** пытается воссоздать наиболее полную "среду" UNIX/POSIX на Windows, со всеми её фишками, типа //fork()//, особенностей файловой системы, сигналами, псевдотерминалами и т.д. в то время как **Mingw** - это (изначально) просто перенос компилятора **GCC** на Windows, без вот этого всего. А **MSYS** - это набор утилит для сборки, главные из которых - пожалуй ''make'' и ''bash''. [[https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-from-Cygwin|Подробности]]. |
| |
Текущая версия **MSYS** - это **[[https://www.msys2.org/|MSYS2]]**. Это такой странный гибрид | Оказывается, нынче текущая версия **MSYS** - это **[[https://www.msys2.org/|MSYS2]]**. Это такой странный гибрид |
из **Cygwin** и старого **MSYS**. | из **Cygwin** и старого **MSYS**. |
Подобно **Cygwin** он делает замену путей в стиле UNIX, маскирует расширение *.exe, | Подобно **Cygwin** он делает замену путей в стиле UNIX, маскирует расширение *.exe, |
поддерживает псевдотерминалы, UNIX-сигналы и еще много чего. Это, с одной стороны, облегчает перенос и build-инг | поддерживает псевдотерминалы, UNIX-сигналы и еще много чего. Это, с одной стороны, облегчает перенос и build-инг |
всяких нетривиальных UNIX программ, с другой стороны, все msys-программы теперь тянут за собой | всяких нетривиальных UNIX программ, а с другой стороны, все msys-программы, в отличии от старого **MSYS** теперь тянут за собой |
DLL-ку: ''msys-2.0.dll'' . | DLL-ку: ''msys-2.0.dll'' . |
| |
Компилятор с тулзами теперь называется **[[http://mingw-w64.org/|Mingw-w64]]**. Это вовсе не значит, что он 64-битный, | А компилятор с тулзами нынче называется **[[http://mingw-w64.org/|Mingw-w64]]**. Это вовсе не значит, что он 64-битный, |
это просто __такое имя__. Он существует во всех возможных комбинациях: 32-битный (т.е. работающий на 32-бит винде) | это просто __такое имя__. Он существует во всех возможных комбинациях: 32-битный (т.е. работающий на 32-бит Windows) |
для билда 32-битных программ, 64-битный для билдинга 64-битных программ, и все промежуточные | для билда 32-битных программ, 64-битный для билдинга 64-битных программ, и все промежуточные |
варианты, то есть 32-битный для построения 64-битных и наоборот, 64-битный для 32-бит. | варианты, то есть 32-битный для построения 64-битных и наоборот, 64-битный для 32-бит. |
Вы еще не запутались ? Держитесь, это только начало... :) | Вы еще не запутались ? Держитесь, это только начало... :) |
| |
**MSYS2** теперь поддерживает два вида терминалов (т.е. тула для отрисовки) - один новомодный **[[https://en.wikipedia.org/wiki/Mintty|Mintty]]**, | **MSYS2** теперь поддерживает два вида терминалов (т.е. программ для отрисовки "текстового" экрана) - один новомодный **[[https://en.wikipedia.org/wiki/Mintty|Mintty]]**, |
утащенный с того же **Cygwin**, который типа лучше поддерживает механизмы терминала UNIX, но опять | утащенный с того же **Cygwin**, который типа лучше поддерживает механизмы терминала UNIX, но опять |
же, тянет за собой всякое... Другой - почти классическая Windows консоль почти без обвеса (**[[https://ru.wikipedia.org/wiki/ConEmu|ConEmu]]**) | же, тянет за собой всякое... Другой - почти классическая Windows консоль почти без обвеса (**[[https://ru.wikipedia.org/wiki/ConEmu|ConEmu]]**) |
И запустить ''pacman -Syuu'' еще раз. | И запустить ''pacman -Syuu'' еще раз. |
| |
**ПРИМЕЧАНИЕ:** С мая 2020 2-битную **MSYS2** стали [[https://www.msys2.org/news/#2020-05-17-32-bit-msys2-no-longer-actively-supported|потихоньку сворачивать]]. Она все еще поддерживается, пакеты для нее выходят, но начальный инсталлятор для 32-битной версии убрали с главной стравницы. Следите за [[https://www.msys2.org/news/|новостями]]. | **ПРИМЕЧАНИЕ:** С мая 2020 2-битную **MSYS2** стали [[https://www.msys2.org/news/#2020-05-17-32-bit-msys2-no-longer-actively-supported|потихоньку сворачивать]]. Она все еще поддерживается, пакеты для нее выходят, но начальный инсталлятор для 32-битной версии **MSYS2** убрали с главной стравницы [[http://repo.msys2.org/distrib/i686/|сюда]]. Следите за [[https://www.msys2.org/news/|новостями]]. |
| |
Вы еще тут ? Я еще держусь, но с трудом... :) | Вы еще тут ? Я еще держусь, но с трудом... :) |
Так что на самом деле у нас бывает (как минимум!) __ТРИ__ build системы: ''msys2'', ''mingw32'' и ''mingw64''. | Так что на самом деле у нас бывает (как минимум!) __ТРИ__ build системы: ''msys2'', ''mingw32'' и ''mingw64''. |
Все три ставить не обязательно. Например, если нам надо только собирать "чистые" 32-битные программы | Все три ставить не обязательно. Например, если нам надо только собирать "чистые" 32-битные программы |
на 32-битной винде то можно поставить 32-битную **MSYS2** без её компиляторов и build-систему ''mingw32''. | на 32-битной винде то можно поставить 32-битную **MSYS2** без её собственных компиляторов и build-систему ''mingw32''. |
(как понимаете, на самом деле это будет 32-битный компилятор **Mingw-w64** работающий под 32-битной **MSYS2** и который умеет | (как понимаете, на самом деле это будет 32-битный компилятор **Mingw-w64** работающий под 32-битной **MSYS2** и который умеет |
делать 32-битные "чистые" программы под Windows. Надеюсь крыша у вас еще не поехала...) | делать 32-битные "чистые" программы под Windows. Надеюсь крыша у вас еще не поехала...) |
Установщик ''pacman'' знает про себя, 32-бита он или 64, берёт правильные пакеты и ставит | Установщик ''pacman'' знает про себя, 32-бита он или 64, берёт правильные пакеты и ставит |
в правильный каталог. Репозиторий для любой **MSYS2** всегда называется просто ''msys2'' :) | в правильный каталог. Репозиторий для любой **MSYS2** всегда называется просто ''msys2'' :) |
Компилятор для **MSYS2** в base-devel не входит, да он нам и не нужен. | Компилятор для самой **MSYS2** в base-devel не входит, да он нам и не нужен. |
| |
{{ start-menu.jpg?nolink|MSYS2 Menu}} | {{ start-menu.jpg?nolink|MSYS2 Menu}} |
Вот только никакого компилятора не появится! | Вот только никакого компилятора не появится! |
| |
Чтобы воспользоваться нужным компилятором, надо запустить нашу **MSYS2** особым образом. | Чтобы воспользоваться нужным компилятором, надо __запустить__ нашу **MSYS2** особым образом. |
Если вы откроете кнопку Пуск --> Все программы --> "MSYS2 32bit" то увидите __три__ разных "среды": | Если вы откроете кнопку Пуск --> Все программы --> "MSYS2 32bit" то увидите __три__ разных "среды": |
"MSYS2 MinGW 32bit", "MSYS2 MinGW 64bit" и "MSYS2 MSYS". По крайней мере, на Windows7 так, | "MSYS2 MinGW 32bit", "MSYS2 MinGW 64bit" и "MSYS2 MSYS". По крайней мере, на Windows7 так, |