Msys on windows это

I. Downloading

MSYS2 ships in the form of installers and base archives. They can be installed or extracted to any place on your computer, but you MUST use folder names that consist of only ascii characters and no spaces (also it makes good sense to put it in a path that doesn’t use many characters due to PATH_MAX being 260; C:\msys32 or C:\msys64 is ideal). You can download the installers or base MSYS2 archives from the links below:

Note: if you are using 64-bit Windows, there is no reason to use 32-bit MSYS2. Well, to be honest, there is one reason: you want to develop MSYS2 software (or contribute to MSYS2-packages) and want to test that the software/package also works on 32-bit MSYS2. When it comes to native software, 64-bit MSYS2 can be used to build, install and run both 32-bit and 64-bit variants. 64-bit MSYS2 software (practically speaking) never needs to be «re-based», giving a better user experience.

II. Installation

The installers and base archives only contain the tools necessary to 1) start MSYS2 2) update the pre-installed packages and 3) install new packages.

After installing or extracting MSYS2 you should start MSYS2 by executing msys2_shell.cmd. (if you did not use an installer and this is first time running of MSYS2 after unpacking, then at this point it will create the files and settings necessary for it to function properly. After this initial run you MUST restart MSYS2 so that the settings are correct)

Now you can update the base MSYS2 packages to their latest versions. MSYS2 comes with a ported version of the [Pacman][1] package manager (known from Arch Linux).

III. Updating packages

Partial upgrades (e.g. updating just pacman while not updating msys2-runtime ) are not supported and are expected to break stuff.

Since pacman 5.0.1.6403, you can just:

  • Run pacman -Syuu . Follow the instructions. Repeat this step until it says there are no packages to update.

Since pacman 4.2.1.6187, there’s an update-core script that helps you to update MSYS2 in the right way. To update your MSYS2 installation you need:

  • Run update-core . If one of the packages is updated during script run you MUST restart MSYS2
  • Run pacman -Suu to update the rest of the packages (allowing downgrades).

In older MSYS2 installations, follow these steps:

  • Before updating you should synchronize your local package databases with the latest repositories: pacman -Sy This command connects to the remote repositories and downloads the package databases.
  • The next step is to update the installed packages (do this initially and as often as you want thereafter): The ‘normal’ way (don’t do this) would be to simply issue: pacman -Suu . however, because all MSYS2 programs share the same address space for DLLs due to how MSYS2 (well, Cygwin) implements ‘fork’, updating bash, MSYS2 or Pacman itself can cause subsequent package updates to fail. For this reason, the safest procedure for updating MSYS2 is to do it in two stages; first those ‘core’ MSYS2 packages: pacman —needed -S bash pacman pacman-mirrors msys2-runtime . if any packages got updated during this then you MUST restart MSYS2 because files that are provided by these packages will be in use and after update you can get fork errors — you need to exit all MSYS2 shells (and if using MSYS2 32bit, run autorebase.bat) then re-launch msys2_shell.bat
  • Finally you can do an update of the remaining packages by issuing: pacman -Suu

IV. General Package Management

  1. Installing new packages: pacman -S

For example, pacman -S make gettext base-devel In this example is a package group which contains many packages. If you try to install a package group, Pacman will ask you whether you want to install one package from the group or all of the packages from the group.
Removing packages: pacman -R

  • Searching for packages: pacman -Ss
  • MSYS2

    Software Distribution and Building Platform for Windows

    MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.

    It consists of a command line terminal called mintty, bash, version control systems like git and subversion, tools like tar and awk and even build systems like autotools, all based on a modified version of Cygwin. Despite some of these central parts being based on Cygwin, the main focus of MSYS2 is to provide a build environment for native Windows software and the Cygwin-using parts are kept at a minimum. MSYS2 provides up-to-date native builds for GCC, mingw-w64, CPython, CMake, Meson, OpenSSL, FFmpeg, Rust, Ruby, just to name a few.

    To provide easy installation of packages and a way to keep them updated it features a package management system called Pacman, which should be familiar to Arch Linux users. It brings many powerful features such as dependency resolution and simple complete system upgrades, as well as straight-forward and reproducible package building. Our package repository contains more than 2000 pre-built packages ready to install.

    For more details see ‘What is MSYS2?’ which also compares MSYS2 to other software distributions and development environments like Cygwin, WSL, Chocolatey, Scoop, . and ‘Who Is Using MSYS2?’ to see which projects are using MSYS2 and what for.

    Installation

    Verify with SHA256 checksum ef1dbd40d03eda274f6d101792e5d197f0709fd306967c42be025f8746fcd9af or GPG signature by 0xf7a49b0ec.

    Run the installer. MSYS2 requires 64 bit Windows 7 or newer.

    Enter your desired Installation Folder (short ASCII-only path on a NTFS volume, no accents, no spaces, no symlinks, no subst or network drives, no FAT).

    When done, tick Run MSYS2 now.

    Update the package database and base packages. Unless your setup file is very recent, it will take two steps. First run pacman -Syu :

    Run «MSYS2 MSYS» from Start menu. Update the rest of the base packages with pacman -Su :

    Now MSYS2 is ready for you. You will probably want to install some tools and the mingw-w64 GCC to start compiling:

    To start building using the mingw-w64 GCC, close this window and run «MSYS MinGW 64-bit» from Start menu. Now you can call make or gcc to build software for Windows.

    Check out the introduction page to learn which Start menu item to use when and which packages to install. Take look at Detailed MSYS2 install guide for troubleshooting and additional details on how to keep your MSYS2 up-to-date.

    Guide Установка GCC & MSYS2
      Автор темы bot Дата начала 18.07.2020 Теги gccmingwmsys2

    GCC — это очень хорошая коллекция компиляторов, и она полностью бесплатна (в речи и в пиве). Тем не менее, существует множество дистрибутивов Windows, распространяемых через Интернет, но только некоторые из них имеют высокое качество. Также нужно сделать много выбора, поэтому я сделал все это для вас, чтобы вам не пришлось беспокоиться и получить хорошие значения по умолчанию.

    Мы будем использовать порт MinGW-w64 в комплекте с MSYS2. Это также позволяет нам использовать * nix toolchains для создания других библиотек, а также использовать предварительно скомпилированные библиотеки, которые предоставляет MSYS2. Обратите внимание, что MSYS2 предоставляет компиляторы MinGW-w64. Двоичные файлы с этими компиляторами будут автономными и не требуют наличия cygwin.dll аналогичного файла.

    Я предполагаю, что ваша машина разработки является 64-битной, и вы хотите, чтобы ваш компилятор предназначался для 64-битных окон по умолчанию. Мы установим как 32-битный, так и 64-битный целевой набор инструментов компилятора, независимо от этого.

    Если у вас есть 32-битная машина разработки , измените каждый случай [B]C:\dev\msys64с[/B] помощью C:\dev\msys32 ниже. Тем не менее, это получить 64-битный компьютер.

    1. Скачайте msys2-x86_64-latest.exe и запустите его. Если ваш компьютер для разработки является 32-разрядным, загрузите вместо него файл msys2-i686-latest.exe . Обязательно установите каталог для установки C:\dev\msys64( C:\dev\msys32для 32-разрядных). Выберите запустить MSYS2 прямо сейчас.
    2. В оболочке MSYS2 выполните следующее. Подсказка: если вы щелкнете правой кнопкой мыши по строке заголовка, перейдите в Параметры -> Клавиши и отметьте «Ctrl + Shift + буквенные клавиши», вы можете использовать Ctrl + Shift + V для вставки в оболочку MSYS.
  • Добавьте C:\dev\msys64\mingw64\bin и C:\dev\msys64\mingw32\bin , в этом порядке , к вашему PATH. Обратите внимание, что MSYS2 также помещает в этот каталог множество других инструментов, особенно Python. Поэтому поместите эти записи ниже любых других инструментов, которые вы, возможно, установили в своем PATH.
  • Готово. Теперь вы можете использовать gcc и g++ т. Д., Чтобы получить 64-битный компилятор таргетинга из обычной командной строки. Чтобы сделать 32-битные двоичные файлы, используйте i686-w64-mingw32-g++ и co.

    Чтобы быть безопасным и воспроизводимым, MSYS2 по умолчанию отключает наследование ваших PATH настроек в своих средах. Вы можете включить эту опцию , за окружающую среду, глядя в соответствующем .ini файле в C:\dev\msys64 течение MSYS2_PATH_TYPE=inherit . Я рекомендую наследовать путь для сред MinGW32 / 64, но поддерживать среду MSYS в чистоте.

    Приведенные ниже инструкции являются примером установки библиотеки, эта часть не требуется.
    Прежде всего, я предлагаю проверить менеджер пакетов MSYS2. В нем много готовых библиотечных пакетов. Вы можете выполнить поиск в хранилище пакетов, используя pacman -Ss your_library , например:

    К сожалению, нет подстановочного знака, но вы можете использовать pacman -Sy `pacman -Ssq boost`для установки все, что возвращается в результате поиска.

    Если вашей библиотеки нет в диспетчере пакетов, вы должны скомпилировать ее самостоятельно. В качестве примера мы попробуем собрать 64-битную библиотеку zlib (это упражнение — zlib уже установлен по умолчанию):

      Открыть mingw64.exe (и если нет, перейдите на CD

    Установка и использование MSYS2 и Mingw-w64 под Windows

    Введение

    Иногда возникает желание “что-нибудь скомпилировать под Windows”. Ага, ага. Вот и у меня однажды возникала такая же ситуация. Когда-то давно мне довелось пользоваться компилятором Mingw и оболочкой MSYS, так что я попробовал их найти и установить. Оказалось, что там “всё не так, как раньше”. Вобщем, сейчас ситуация такая: “простой” MinGW и “классический” MSYS обновляться перестали и они зачахли где-то в районе 2015.

    ПРИМЕЧАНИЕ: Надеюсь, читатели понимают разницу между Cygwin и Mingw. Кратко: Cygwin пытается воссоздать наиболее полную “среду” UNIX/POSIX на Windows, со всеми её фишками, типа fork(), особенностей файловой системы, сигналами, псевдотерминалами и т.д. в то время как Mingw — это (изначально) просто перенос компилятора GCC на Windows, без вот этого всего. А MSYS — это набор утилит для сборки, главные из которых — пожалуй make и bash . Подробности.

    Текущая версия MSYS — это MSYS2. Это такой странный гибрид из Cygwin и старого MSYS. Подобно Cygwin он делает замену путей в стиле UNIX, маскирует расширение *.exe, поддерживает псевдотерминалы, UNIX-сигналы и еще много чего. Это, с одной стороны, облегчает перенос и build-инг всяких нетривиальных UNIX программ, с другой стороны, все msys-программы теперь тянут за собой DLL-ку: msys-2.0.dll .

    Компилятор с тулзами теперь называется Mingw-w64. Это вовсе не значит, что он 64-битный, это просто такое имя. Он существует во всех возможных комбинациях: 32-битный (т.е. работающий на 32-бит винде) для билда 32-битных программ, 64-битный для билдинга 64-битных программ, и все промежуточные варианты, то есть 32-битный для построения 64-битных и наоборот, 64-битный для 32-бит.

    Вы еще не запутались ? Держитесь, это только начало… 🙂

    MSYS2 теперь поддерживает два вида терминалов (т.е. тула для отрисовки) — один новомодный Mintty, утащенный с того же Cygwin, который типа лучше поддерживает механизмы терминала UNIX, но опять же, тянет за собой всякое… Другой — почти классическая Windows консоль почти без обвеса (ConEmu) но зато с закладками (Tabs). На самом деле, есть еще третий вид терминала (defterm), но он не совсем поддерживается… Подробности. Чтобы запустить MSYS2 c нужным терминалом, надо стартовый msys2_shell.cmd запустить с нужным ключиком. По-умолчанию запускается Mintty.

    Да, сама MSYS2 тоже бывает 32-битная и 64-битная. К счастью на сайте MSYS2 есть нужный инсталлятор, ( msys2-i686 или msys2-x86_64 ) — огромный файл, у которого внутри целый архив соответствующих программ. MSYS2 32-битная ставится в C:\msys32 , 64-битная — в C:\msys64 . Можете попробовать поменять имя, но тогда никто ничего не гарантирует… Но вот беда — инсталлятор старый и первое, что нужно сделать — это обновиться: pacman -Syuu Этот pacman первым делом обновит сам себя, так что ОБЯЗАТЕЛЬНО надо прибить всё окно! НЕ выходя. И запустить pacman -Syuu еще раз.

    ПРИМЕЧАНИЕ: С мая 2020 2-битную MSYS2 стали потихоньку сворачивать. Она все еще поддерживается, пакеты для нее выходят, но начальный инсталлятор для 32-битной версии убрали с главной стравницы сюда. Следите за новостями.

    Вы еще тут ? Я еще держусь, но с трудом… 🙂

    Компилятор и его запуск

    Ну вот например поставили мы 32-битную MSYS2. Давайте попробуем наконец скомпилить HelloWorld под Windows консоль. А вот хрен вам! Оказывается, теперь есть НЕ ОДИН компилятор, точнее не одна build-система, а несколько. Из них первая — для компиляции программ под САМУ MSYS2 (вы же помните, что она тащит за собой теперь как минимум DLL msys-2.0.dl и работает с UNIX-путями), а вторая build-система — для “обычных” Windows программ, как в старом Mingw. Компилятор и там и там — Mingw-w64, но по-разному настроенный. Да, не забываем что всё это может существовать в 32-бит, 64-бит и все комбинации между ними! Так что на самом деле у нас бывает (как минимум!) ТРИ build системы: msys2 , mingw32 и mingw64 . Все три ставить не обязательно. Например, если нам надо только собирать “чистые” 32-битные программы на 32-битной винде то можно поставить 32-битную MSYS2 без её компиляторов и build-систему mingw32 . (как понимаете, на самом деле это будет 32-битный компилятор Mingw-w64 работающий под 32-битной MSYS2 и который умеет делать 32-битные “чистые” программы под Windows. Надеюсь крыша у вас еще не поехала…)

    Давайте сначала установим тулзы для сборки: pacman -S base-devel Это установит всякие полезные для сборки утилиты в нашу MSYS2 (любой битности). Установщик pacman знает про себя, 32-бита он или 64, берёт правильные пакеты и ставит в правильный каталог. Репозиторий для любой MSYS2 всегда называется просто msys2 🙂 Компилятор для MSYS2 в base-devel не входит, да он нам и не нужен.

    А вот теперь аккуратнее! Чтобы установить build-систему, которая делает 32-бит программы надо установить группу mingw-w64-i686-toolchain . То есть компилятор называется Mingw-w64 (помним, что это просто название такое). Ставится он на текущую MSYS2 и будет генерить 32-битные программы (хвостик -i686 ). Делаем: pacman -S mingw-w64-i686-toolchain Пакеты скачаются (из репозитория mingw32 ) и будут установлены. Вот только никакого компилятора не появится!

    Чтобы воспользоваться нужным компилятором, надо запустить нашу MSYS2 особым образом. Если вы откроете кнопку Пуск –> Все программы –> “MSYS2 32bit” то увидите три разных “среды”: “MSYS2 MinGW 32bit”, “MSYS2 MinGW 64bit” и “MSYS2 MSYS”. По крайней мере, на Windows7 так, Где эта папка на Windows10 — не знаю. Вот эти три разные режима запуска и делают всю магию. Альтернативный путь — запускать C:\msys32\msys2_shell.cmd с ключами -mingw32 , -mingw64 или -msys2 . Это точно то же самое.

    Давайте запустим “MSYS2 MinGW 32bit”. Теперь у нас доступен компилятор gcc, причем он полностью настроен, с указанием папки include , линкера и пути к библиотекам. Ура!

    Пишем программы

    Создадим Си-шный файлик hello.c со стандартным библиотечным вызовом:

    и запустим ПРЯМО ИЗ CMD.EXE (то есть из другого окна CMD, не из MSYS2):

    Всё работает. Есть и недостатки — полученный EXE-шник имеет размер почти 300Kb! Воспользуемся командой strip и удалим из него все лишнее. Получится EXE-шник около 16К, что гораздо лучше. Посмотрим, что у нас получилось:

    Как и требовалось, это “чистое” автономное 32-битное консольное Win32 приложение, которое использует только стандартные библиотеки 32-битного Windows (можно поспорить насчет стандартности MSVCRT.DLL, но по факту, она есть практически везде). Скорее всего программа будет работать даже в Windows 95 (не пробовал).

    В данном пакете сразу включен Windows SDK, поэтому можно писать программы на Win32 API , как невинные типа Пишем простое консольное приложение на чистом WinAPI так и более серьезные, типа CreateFile( L“\\\\.\\PhysicalDrive0”…

    Давайте теперь напишем оконную программку под Windows (точнее под Win32). Вытащим пример из старика Петзольда (Charles Petzold. Programming Windows):

    Все работает. Чтобы указать, что у нас оконная, а не консольная программа, используется ключ -mwindows . Первоначально ключ -m служил для указания модели машины или процессора, а тут его приспособили для указания “подсистемы”. Если в программе есть WinMain(), то даже -mwindows указывать не обязательно, компилятор сам понимает, но на всякий случай укажем.

    Если мы хотим быть современными молодыми динамичными программистами, то лучше писать на каком-нибудь Framework (как етто по рюски? Каркас?). Например, очень большое число разных эмуляторов винтажных систем написано на SDL.

    По SDL в сети гуляет просто огромное число примеров, туториалов, введений и т.д. SDL рисует, поёт, поддерживает джойстик и сеть, может быть даже варит кофе… Текущая версия: SDL2. Давайте поставим себе SDL2 вместе со всеми её запчастями :
    pacman -S mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_gfx mingw-w64-i686-SDL2_image mingw-w64-i686-SDL2_mixer mingw-w64-i686-SDL2_net mingw-w64-i686-SDL2_ttf
    (набирать в одну строку или покомпонентно)

    Напишем небольшую программу под SDL:

    Программа просто создает маленькое (320×240) окошко с заголовком, закрашивает его синим (R=0, G=0, B=0xFF) и ждет, когда из нее выйдут.

    Компиляция чуть сложнее.

    Получается целая куча ключей командной строки.

    Можно выписать ключи на бумажку или создать make-файл. Однако всё проще. Многие Frameworks имеют специальные конфиг-файлы, в которых указаны всё необходимые настройки и нужно просто их использовать. SDL2 — не исключение.

    Давайте просто подключим вывод в свою командную строку (это делается с помощью обратного апострофа: ` . Читается как “Использовать ВЫВОД команды”. Подробности в man bash секция “Command Substitution” )

    Если мы попытаемся теперь запустить эту программу из CMD.EXE, мы получим ошибку:
    “Запуск программы невозможен, так как на компьютере отсутствует SDL2.dll .
    Попробуйте переустановить программу.”

    Это неудивительно, так как полученная программа требует для своей работы SDL2.DLL , а она пока доступна только “изнутри” среды MSYS2. Можно пойти двумя путями: первый — установить SDL2.DLL “в систему”, второй: просто положить SDL2.DLL в каталог с программой. Тогда за счет известной особенности Windows “use local DLL” программа при запуске найдет нужную DLL и подключит. Скачаем нужный runtime (например 32-битный) на сайте https://www.libsdl.org/download-2.0.php и просто положим DLL в каталог с программой. Теперь всё запускается из под CMD.EXE и рисует синее окошко.

    ПРИМЕЧАНИЕ: Обратите внимание, что MSYS2-шная SDL2.DLL тянет за собой кучу других DLL. Это происходит потому, что авторы MSYS2 выбрали такой путь: всё что можно — выносить в отдельные библиотеки. Ну ОК. Это хорошо работает для экономии памяти MSYS2, но сильно мешает создавать “автономные” приложения Windows на Mingw. Используйте “официальную” SDL2.DLL
    Второе. Можно даже саму SDL2.DLL вкомпилить статически. Можно. Но сейчас SDL2 употребляется настолько часто, что автор считает допустимым использовать такие “инфраструктурные” компоненты, типа QT или той же SDL2 в форме DLL. Дело вкуса.

    OpenGL

    Другая самая известная библиотека — это 3D библиотека OpenGL. По ней также существуют тысячи примеров и туториалов. Не вдаваясь в тонкости OpenGL и его реализации на разных машинах и видеокартах, попробуем создать OpenGL Windows-приложение. Возьмем, например, официальные примеры с официального сайта OpenGL. Например, нарисуем красный кубик: cube.c .

    Тут все-таки надо сказать, что OpenGL за время своего существования сменил несколько версий. Поэтому, при чтении литературы иногда надо обращать внимание, про какую версию OpenGL идет речь. Вдобавок OpenGL за это время оброс несколькими побочными библиотеками, которые формально не входят в спецификацию, но все к ним настолько привыкли, что используют их не задумываясь. Самые часто применяемые — это GLU и GLUT. Библиотека GLUT, например, обеспечивает связку с операционной системой, в частности создает окно нужным способом: через X Window на UNIX системах, или через GDI на Windows. Большинство примеров с сайта OpenGL написаны с применением GLU и GLUT. В Windows имеются библиотеки OPENGL32.DLL и GLU32.DLL но нету GLUT.

    Как было написано выше, хотелось бы создать максимально независимое Windows-приложение и не таскать за собой libfreeglut.dll . К сожалению, в текущем MSYS2 не очень понятно (мне по крайней мере) разделены библиотеки, например статическая libglut.a содержится в “базовом” пакете mingw-w64-i686-crt-git , а реализация freeglut несет с собой libfreeglut_static.a (именно с таким именем, нарушая обычное наименование библиотек Mingw-w64). В любом случае — установим пакет freeglut: pacman -S mingw-w64-i686-freeglut и откомпилируем наш кубик:

    Для сборки независимого EXE-шника пришлось добавить всю эту цепочку библиотек. Не завидую авторам скриптов ./configure …

    ПРИМЕЧАНИЕ: Здесь собирается 32-битное приложение. Сборка 64-битных тут пока не рассматривается. Опция -mwindows нужна, чтобы не создавалось черное окно консоли для Windows-приложений. Библиотека -lwinmm нужна для поддержки джойстика (!) в GLUT. Библиотеку -lgdi32 в принципе можно не добавлять, она и так унаследуется.

    Другая популярная библиотека-“связка” для управления окнами для OpenGL — это GLFW Установим ее: pacman -S mingw-w64-i686-glfw . Текущая версия: glfw3. Это надо учитывать, когда читаете туториалы, иногда речь идет о старых версиях без упоминания деталей.

    Пример возьмем с официального сайта GLFW: Getting started. Там же есть краткая инструкция по сборке: Building programs that use GLFW. Особых сложностей не заметно, за исключением тонкостей сборки со статической и динамической библиотекой GLFW3.DLL .

    Большинство опций нам уже знакомо: -mwindows для создания не-консольного приложения, подключение библиотек, новое — только определение -DGLFW_DLL согласно рекомендациям по сборке. Получившееся приложение требует GLFW3.DLL , которую для Windows можно скачать с официального сайта GLFW. Обратите внимание, что подобно SDL2.DLL — это “инфраструктурная” библиотека. Использовать ли ее — дело вкуса. Можно скомпилировать GLFW статически:

    Исполняемый файл увеличится примерно на 200К, за счет включения GLFW внутрь приложения, но зависимости будут только от “стандартных” DLL имеющихся в Windows.

    OpenGL через SDL

    Наконец, существует возможность — использовать уже знакомую нам SDL для “склейки” операционной системы и OpenGL. Это намного удобнее т.к. в SDL имеются функции ввода, управления манипуляторами, звуком, сетью и т.д. и самое главное — обе библиотеки кросс-платформенные.

    Дополнительное чтение

    ПРИМЕЧАНИЕ: Компиляторы gcc, а особенно g++ иногда создают код, который зависит от библиотек libgcc и libstdc++ . Чтобы полученное приложение не требовало соответствующих DLL, в командную строку можно добавить опции -static-libgcc и -static-libstdc++ . Библиотеки же, которые являются “стандартными” для Windows, Mingw-w64 всегда делает динамическими, даже несмотря на присутствие опции -static в опциях компилятора.

    Читайте также:  Дизайнер этикеток mac os
    Оцените статью