LibreBay
Статьи про ОС Ubuntu. Языки программирования Си и C++.
Инструменты разработки и многое другое.
суббота, 1 декабря 2018 г.
Установка и настройка Msys2 для программирования на C и С++ в Windows
Есть замечательный проект MSYS2, который предоставляет для Windows пакетный менеджер Pacman, портированный из Arch Linux. С помощью данного пакетного менеджера можно легко устанавливать необходимые компиляторы для программирования, библиотеки для разработчиков, например, GTK+ или Qt5, и различные инструменты разработки.
В данной статье рассмотрим, как установить набор компиляторов GCC для C/C++, и напишем простые программы на этих языках.
Установщик MSYS2 скачивается с сайта http://www.msys2.org/. MSYS2 не может быть установлен на диск с разметкой FAT* и на Windows XP или более старую Windows. Такие компьютеры уже редкость, и ограничения не создают проблем.
Установка и настройка Msys2
![]() |
| Рис. 1. Начало установки MSYS2 |
Указываем директорию установки. Путь должен быть коротким, содержать только латиницу с цифрами (ASCII). В пути не должно быть знаков ударений, пробелов и символических ссылок. Лучше оставить путь по умолчанию:
![]() |
| Рис. 2. Выбор каталога установки MSYS2 |
Указываем называние папки в меню «Пуск»:
![]() |
| Рис. 3. Выбор папки в меню «Пуск» |
Ждем завершения процесса установки:
![]() |
| Рис. 4. Процесс установки MSYS2 |
Оставляем отмеченной галочку «Запустить Msys2 сейчас» и нажимаем завершить:
![]() |
| Рис. 5. Завершение установки MSYS2 |
В начале необходимо обновить основные системные пакеты MSYS2 и базу данных с информацией об доступных пакетах. Для этого вводим команду:
И соглашаемся на обновление, вводом y :
![]() |
| Рис. 6. Обновление баз данных пакетов MSYS2 |
Для завершения установки возможно потребуется вручную закрыть окно с терминалом MSYS2. И заново его запустить через ярлык в меню «Пуск»:
![]() |
| Рис. 7. Требуется перезапуск терминала MSYS2 |
После перезапуска терминала Msys2, выполняем команду для обновления остальных пакетов:
![]() |
| Рис. 8. Обновление остальных пакетов MSYS2 |
После всех обновлений, пакетный менеджер Pacman готов к применению.
Установка набора компиляторов GCC для C/C++ и легковесной IDE Geany
В качестве редактора кода воспользуемся программой Geany, в которой легко писать простые программы на C/C++, компилировать и запускать.
Hello World на C/C++
Запускаем geany в виде фоновой задачи в терминале Msys2:
Пока работает geany, можно продолжать пользоваться терминалом Msys2, но нельзя его закрывать, так как geany закроется вместе с ним. В одной из следующих статей я расскажу про другой вариант запуска программ, установленных в Msys2.
Начнем с языка Си и напишем программу, выводящее сообщение Hello, World!:
Установка и использование MSYS2 и Mingw-w64 под Windows
Введение
Иногда возникает желание “что-нибудь скомпилировать под Windows”. Ага, ага. Вот и у меня однажды возникала такая же ситуация. Когда-то давно мне довелось пользоваться компилятором Mingw и оболочкой MSYS, так что я попробовал их найти и установить. Оказалось, что там “всё не так, как раньше”. Вобщем, сейчас ситуация такая: “простой” MinGW и “классический” MSYS обновляться перестали и они зачахли где-то в районе 2015.
Компилятор с тулзами теперь называется Mingw-w64. Это вовсе не значит, что он 64-битный, это просто такое имя. Он существует во всех возможных комбинациях: 32-битный (т.е. работающий на 32-бит винде) для билда 32-битных программ, 64-битный для билдинга 64-битных программ, и все промежуточные варианты, то есть 32-битный для построения 64-битных и наоборот, 64-битный для 32-бит.
ПРИМЕЧАНИЕ: С мая 2020 2-битную MSYS2 стали потихоньку сворачивать. Она все еще поддерживается, пакеты для нее выходят, но начальный инсталлятор для 32-битной версии убрали с главной стравницы сюда. Следите за новостями.
Компилятор и его запуск
Пишем программы
Создадим Си-шный файлик hello.c со стандартным библиотечным вызовом:
и запустим ПРЯМО ИЗ CMD.EXE (то есть из другого окна CMD, не из MSYS2):
Как и требовалось, это “чистое” автономное 32-битное консольное Win32 приложение, которое использует только стандартные библиотеки 32-битного Windows (можно поспорить насчет стандартности MSVCRT.DLL, но по факту, она есть практически везде). Скорее всего программа будет работать даже в Windows 95 (не пробовал).
Давайте теперь напишем оконную программку под Windows (точнее под Win32). Вытащим пример из старика Петзольда (Charles Petzold. Programming Windows):
Если мы хотим быть современными молодыми динамичными программистами, то лучше писать на каком-нибудь Framework (как етто по рюски? Каркас?). Например, очень большое число разных эмуляторов винтажных систем написано на SDL.
Напишем небольшую программу под SDL:
Программа просто создает маленькое (320×240) окошко с заголовком, закрашивает его синим (R=0, G=0, B=0xFF) и ждет, когда из нее выйдут.
Компиляция чуть сложнее.
Получается целая куча ключей командной строки.
OpenGL
Исполняемый файл увеличится примерно на 200К, за счет включения GLFW внутрь приложения, но зависимости будут только от “стандартных” DLL имеющихся в Windows.
OpenGL через SDL
Дополнительное чтение
Русские Блоги
Установить и настроить msys2 на windows
Установить и настроить msys2 на windows
msys2 поддерживает общие команды оболочки Linux, а также можно установить zsh, если по умолчанию установлены bash и dash. Более удобно то, что в msys2 вы также можете напрямую запускать программы Windows, такие как блокнот, команды запуска и т. Д., И вы также можете использовать команды cmd.
установка msys2
Установить msys2 на windows очень просто, прямо с официального сайта msys2 [http://msys2.github.io] Загрузите установочный пакет exe, дважды щелкните, чтобы запустить установку.
На официальном сайте доступны для скачивания две версии: 32-битная и 64-битная. 32-битную загрузку можно установить в 32-битных или 64-битных окнах, а 64-битный установочный пакет можно установить только в 64-битных окнах.
Запустить msys2
После установки msys2 в меню «Пуск» будет три способа запуска:
Разница между тремя режимами запуска в основном заключается в разнице в программном пакете среды компиляции, например в разных версиях gcc, clang и т. Д. Общие инструменты, такие как grep, git, vim, emacs и т. Д., Одинаковы во всех трех отношениях.
Описание операционной среды:
Почему есть три способа начать? Если вы хотите знать, вам нужно знать историю среды компиляции mingw, вы можете обратиться к статье Великого Бога: [Разница между MinGW и MinGW-W64]. В этой статье кратко объясняется:
Поэтому большую часть времени я использую 64-битную версию MSYS2 MinGW.
Все три метода запуска MSYS2 запускаются из сценария msys2_shell.cmd.Три метода запуска в сценарии только устанавливают разные значения для переменной MSYSTEM.
Это видно из файлов конфигурации etc / profile и etc / msystem. После установки переменной MSYSTEM три метода запуска заключаются в поиске пакетов программного обеспечения для разработки и операционной среды в папках opt / bin, mingw32 / bin и mingw64 / bin. Общие инструменты, такие как grep, git, vim, emacs и т. Д., Устанавливаются в / usr / bin, и все три метода могут быть вызваны.
Таким образом, чтобы запустить Msys2, вы можете не только щелкнуть ярлык в меню «Пуск», но и запустить его с помощью следующей команды (обычно это не обязательно, но ее можно использовать для настройки виртуальных терминалов, таких как conemu):
msys2 китайская искаженная проблема
В настоящее время (2018 г.) msys2 имеет очень хорошую поддержку китайского языка. Однако с некоторыми командами все еще возникают проблемы, например, msys2 ping Chinese будет отображать искаженные символы:
Команд для этой задачи немного, но все же влияет на настроение.
Решение
Создайте новый файл / bin / win, содержимое файла будет следующим:
Создайте новый файл /etc/profile.d/alias.sh, его содержимое будет следующим:
Эффект после перезапуска msys2:
Конечно, эта проблема не возникает при использовании виртуального терминала conemu без использования вышеуказанного решения.
Проблема сопоставления каталогов MSYS2
Чтобы решить эту проблему /etc/profile Добавьте в файл ключевую переменную:
Программная ссылка каталога, созданная после добавления, очень похожа на ссылку в Linux. Прямой cd может войти в папку подключенного каталога, что очень удобно.
Метод каталога файлов конфигурации Fastab
Метод настройки сопоставления файловых каталогов в / etc / fstab:
Добавьте следующий код сразу после / etc / fstab, а затем перезапустите msys2.
После того, как указанные выше команды настроены, вы можете напрямую переключиться в каталог C: \ Users \ adminstrator \ Desktop после cd / desktop в терминале.
msys2 настраивает источник внутреннего зеркала
Установка программного обеспечения с помощью команды pacman сначала загрузит программное обеспечение из источника по умолчанию. Pacman использует источник SF по умолчанию, но иногда он нестабилен в Китае, поэтому вы можете добавить внутренний источник. Такие как:
Метод: Измените три файла mirrorlist. * В папке \ etc \ pacman.d в каталоге установки msys2.
Конфигурация личного текущего источника выглядит следующим образом:
Обновить msys2
msys2 поставляется с программным обеспечением для управления и установки pacman, аналогичным apt-get в ubuntu. Программный пакет, загруженный pacman, по умолчанию хранится в каталоге msys64 \ var \ cache \ pacman \ pkg. Используйте pacman для обновления системы и всего установленного программного обеспечения с помощью одной команды.
После этого нужно закрыть все оболочки MSYS2, а затем запустить autorebase.bat в корневом каталоге msys2.
Pacman портирован из Arch linux. Pacman поддерживает только полное обновление системы, но не частичное. Так что даже в msys2 pacman-Syu обновит всю систему.
Если во время обновления сеть работает медленно, и вы чувствуете, что это пустая трата времени и жесткого диска, вы действительно не хотите обновлять так много вещей, вы можете обновлять программные пакеты один за другим. Используйте следующую команду для обновления основного пакета:
Установите git и vim
В msys2 git зависит от curl, vim и perl, поэтому после установки git vim будет установлен автоматически.
git проблема с отображением китайского номера
Если в git есть имя файла на китайском языке, оно будет отображаться в виде \ 232 \ 333, что особенно неудобно, и имя файла становится очень длинным.
Установите и настройте zsh
Существует много типов оболочек. По умолчанию в linux используется bash. Хотя bash имеет очень мощные функции, для программистов, которые считают лень своим достоинством, функция подсказки bash недостаточно мощна, а интерфейс недостаточно ярким, что не является идеальным инструментом.
Функция zsh чрезвычайно мощная, но конфигурация слишком сложна, сначала она использовалась только гиками. Позже был очень скучный программист, который не выдержал. Большинство друзей-обезьян могли использовать только однообразный bash, поэтому он создалПроект с открытым исходным кодом oh-my-zsh
. С тех пор требуется только простая установка и настройка, и начинающие программисты могут использовать high-end и high-end zsh.
Проверьте, установлен ли в msys2 zsh
Установите ой мой zsh
[oh-my-zsh] Исходный код размещен на github, сначала убедитесь, что git установлен на вашем компьютере
** Настройте zsh как оболочку msys2 по умолчанию **
msys2 не поддерживает команду chsh для изменения оболочки по умолчанию. Поэтому либо напрямую используйте zsh для переключения на zsh после каждой записи, либо измените msys2_shell. cmd файл.
Откройте файл msys2_shell.cmd в каталоге установки msys2 (c: \ msys64). Измените переменную LOGINSHELL в файле следующим образом:
Перезапустите msys2, чтобы по умолчанию использовать zsh.
выбор темы zsh
oh-my-zsh имеет много красивых тем,https://github.com/robbyrussell/oh-my-zsh/wiki/themes Список тем можно посмотреть выше.
** плагин автоматического завершения zsh **
Функция автозаполнения zsh уже является очень мощной, но функция подключаемого модуля автозаполнения incr.zsh в zsh более мощная. Она может отображать предполагаемые последующие команды серым цветом, когда вы вводите команду.
Добавьте в конец файла
/.oh-my-zsh/plugins/incr/incr\*.zsh И обновите конфигурацию
** Решение конфликта между incr.zsh и vim prompt **
Использование подключаемого модуля автозаполнения может конфликтовать с функцией подсказки vim, например, следующая ошибка:
/.zcompdump* Просто удалите
** zsh зависает при использовании команды git **
Когда oh-my-zsh входит в каталог, содержащий хранилище git, он становится медленнее / зависает, чем обычно.Причина в том, что oh-my-zsh необходимо получить информацию об обновлении git.
окей, если хочешь восстановить, просто выставь 0
Установить и настроить conemu
В качестве виртуального терминала conemu лучше, чем mintty по умолчанию msys2. Таким образом, студенты, которым это нравится, могут использовать конему.
Ссылка для скачивания с официального сайта ConEmu:https://conemu.github.io/
Возьмите MSYS2 MingGW64 в качестве примера, настройте задачу MSYS2:
MSYS2_PATH_TYPE = наследовать означает объединить переменную пути в системе Windows.
Если вы установили zsh и хотите использовать zsh по умолчанию, измените bash в коде на zsh
Для режима mingw32 необходимо только изменить MSYSTEM = mingw32 в коде, а режим msys изменен на MSYSTEM = msys.
Conemu имеет множество конфигураций. Если вам нужно настроить больше параметров, вы можете проверить соответствующие статьи о конфигурации conemu на этом сайте.
установка emacs и простая настройка
Поэтому рекомендуется использовать msys2 pacman для установки emacs под Windows.
## Автоматическое сохранение файлов и
Конфигурация файла резервной копии
emacs всегда генерирует кучу файлов
файлов и # файлов # файлов.Что это за файлы, на самом деле они автоматически копируются и сохраняются автоматически.
Когда emacs сохраняет файл, он изменяет последний сохраненный файл в файл, А затем сохраните его в файл. файлЭто автоматическая резервная копия файла для предотвращения повреждения или потери файла.
Если вам не нравится автоматическое резервное копирование и автоматическое сохранение emacs, вы можете отключить его следующим способом:
Для файла с автосохранением # файл # поместите автоматически сохраненные файлы в указанную папку следующим образом:
Добавьте следующий оператор lisp в
управление пакетами emacs и настройки источника
Просмотр списка пакетов и установочного пакета
Используйте команду M-x package-install, чтобы также установить пакет
Исходная конфигурация
Посмотреть исходный код пакета: C-h v package-archives
Добавить источник пакета: M-x customize-variable RET package-archives
Проверяйте посылку после обновления, будет намного больше, чем раньше.
emacs установить режим уценки
Затем каждый раз, когда вы открываете файл уценки, он автоматически переключается в режим уценки, конечно, вы также можете использовать M-x markdown-mode для переключения вручную.
Конфигурация среды программирования
gcc установить
Можно использовать любой метод запуска msys2, но после установки он может работать только в соответствующей среде.
Вы можете увидеть следующие три
Они соответствуют трем средам msys. Установите здесь 64-битную версию, остальные аналогичны.
Независимо от того, в какой среде вы устанавливаете, MSYS2 автоматически упакует его в msys64 / mingw64. Из предыдущего анализа мы видим, что программы в этом каталоге могут использоваться только в среде mingw64. Хотя mingw-w64-x86_64-gcc можно установить в двух других средах, mingw-w64-x86_64-gcc использовать нельзя.
Используйте 64-битную версию MinGW для входа в MSYS2:
qt install
Подобно qt, мы выбрали установку mingw-w64-x86_64-qt5.
Qt очень велик после установки, при необходимости устанавливайте его осторожно.
установка pyhon
Python очень хорошо поддерживает Windows, и даже после загрузки установочного пакета версии для Windows его можно вызвать в msys2, поэтому, если вы не хотите бросать, просто используйте версию python для Windows.
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 2400 pre-built packages ready to install.
Installation
Verify with SHA256 checksum d5ef90f174a355f5adc0b109b8ed60a1bc3dd19c03c7fd4b33ce1f405e5bd51f 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.
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.
Sponsors
Our main server is sponsored by jsDelivr
ExtremeIX sponsors our mirror in India
Various organizations provide us with mirrors all around the world, see our mirror list for details.
MSYS2-Introduction
MSYS2 is software distribution and a building platform for Windows. It provides a Unix-like environment, a command-line interface and a software repository making it easier to install, use, build and port software on Windows. That means Bash, Autotools, Make, Git, GCC, GDB. all easily installable through Pacman, a fully-featured package manager.
It is an independent rewrite of MSys, based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 with the aim of better interoperability with native Windows software.
Both 32-bit and 64-bit variants exist and receive mostly the same level of support. Here is a list of packages we provide.
Subsystems
The mingw subsystems provide native Windows programs and are the main focus of the project. These programs are built to co-operate well with other Windows programs, independently of the other subsystems. This part builds on the MinGW-w64 project.
The msys2 subsystem provides an emulated mostly-POSIX-compliant environment for building software, package management, and shell scripting. These programs live in a virtual single-root filesystem (the root is the MSYS2 installation directory). Some effort is made to have the programs work well with native Windows programs, but it’s not seamless. This part builds on the Cygwin project.
Shells
For optimal usage, MSYS2 automatically strips your PATH environment variable, essentially only leaving C:\Windows\System32 and few others. This behavior can be controlled by setting the variable MSYS2_PATH_TYPE before starting a shell or using a correct argument when executing the launcher script. Beware that mixing in programs from other MSYS2 installations, Cygwin installations, compiler toolchains or even various other programs is not supported and will probably break things in unexpected ways. Do not have these things in PATH when running MSYS2 unless you know what you’re doing.
Packages
You might be wondering why there appears to be only one architecture variant of the msys2 repository. In reality there are two, but the decision about which one to use is made at the time you install it, depending on whether you installed the i686 or the x86_64 version. It is possible to install both if you wish. Actually, you can have multiple installations of each on your computer, but you should never run programs from two different MSYS2 XXbit variants at the same time due to DLL address space and version conflicts. Also note that the uninstaller will only remove the most recently installed one of each variant).















