msys2安装与配置: 在windows上使用linux工具链g++和包管理工具pacman C++开发

文章目录

为什么用这个msys2

  • 方便windows上的C++开发demo,不需要VS了
  • 方便C++开发安装opencv等三方库
  • 有了这个就不需要另外安装git, cmake, mingw64了,都可以通过pacman包管理工具一键安装

下载、doc

官网 https://www.msys2.org/

官方文档 https://www.msys2.org/docs/terminals/

github https://github.com/msys2/msys2-installer/releases/

  • 根据github readme中的说明,也许自解压包是个更好的选择(更加干净)

这个msys2更新还挺活跃的,最新是2023.5.26版本, 软件本体只有84M,nice

安装,很简单

双击安装。安装过程基本上就是在解压,安装过程信息如下:到最后Updating trust database...的时候可能会卡住,此时进度50%,等着,或者尝试翻墙

log 复制代码
正在准备安装...

正在准备解压组件......

正在解压组件......
正在提取"20230526msys64.7z"
已完成

正在安装组件 MSYS2
Copying skeleton files.
These files are for the users to personalise their msys2 experience.

They will never be overwritten nor automatically updated.


'./.bashrc' -> '/home/username2/.bashrc'
'./.bash_logout' -> '/home/username2/.bash_logout'
'./.bash_profile' -> '/home/username2/.bash_profile'

'./.profile' -> '/home/username2/.profile'

'C:\windows\system32\drivers\etc\hosts' -> '/etc/hosts'

'C:\windows\system32\drivers\etc\protocol' -> '/etc/protocols'

'C:\windows\system32\drivers\etc\services' -> '/etc/services'

'C:\windows\system32\drivers\etc\networks' -> '/etc/networks'

==> Generating pacman master key. This may take some time.

==> Updating trust database...

==> Appending keys from msys2.gpg...

==> Locally signing trusted keys in keyring...

  -> Locally signed 5 keys.
==> Importing owner trust values...
==> Disabling revoked keys in keyring...

  -> Disabled 4 keys.
==> Updating trust database...

[H[2J[3J
已完成
编写维护工具。

安装已完成!

初次运行,做些配置

安装之后有好几个终端环境,推荐使用的、默认打开的是ucrt64.exe,我这里也用这个,任务栏是这样的:

配置如下(这里刚开始,用Notepad++等编辑器编辑就行):

  • 修改home目录为C:/Users/username这个win目录
    • 配置文件 /etc/nsswitch.conf
    • 修改:db_home: windows cygwin desc
    • 修改后最好把安装位置/home/user/下的配置文件靠背到win home下,比如.bashrc啥的
    • 修改后重新打开终端生效,可pwd查看路径
  • 更换为国内源
    • 配置文件 /etc/pacman.d/下的
    • 修改:
      • db_home: windows cygwin desc各个mirrorlist文件,没必要都修改,修改你需要用的环境即可。比如我用ucrt64则只需修改: mirrorlist.msys, mirrorlist.ucrt64
      • 如何修改:把下面的国内源挪到上面,修改后应该是直接生效的
  • 关闭不需要的软件源搜索结果:
    • 配置文件 /etc/pacman.conf

    • 修改:翻到最下面,把不需要的环境注释掉:

      bash 复制代码
      # [clangarm64]
      # Include = /etc/pacman.d/mirrorlist.mingw
      # 
      # [mingw32]
      # Include = /etc/pacman.d/mirrorlist.mingw
      # 
      # [mingw64]
      # Include = /etc/pacman.d/mirrorlist.mingw
      
      [ucrt64]
      Include = /etc/pacman.d/mirrorlist.mingw
      
      # [clang32]
      # Include = /etc/pacman.d/mirrorlist.mingw
      # 
      # [clang64]
      # Include = /etc/pacman.d/mirrorlist.mingw
      
      [msys]
      Include = /etc/pacman.d/mirrorlist.msys

更新

pacman -Syyu,因为已经换源了,速度会挺快

会自动刚更新msys软件本体,和安装过的软件包。如果不想更新某个软件包,可以在配置文件设置。

  • 包管理工具是pacman, 也就是arch linux和manjaro linux的包管理工具,所以有问题搜索的时候可以参考这两个发行版的解决方案

软件安装与卸载方法

  • 一般的安装命令:pacman -S 软件包名 进行安装
  • 卸载命令:pacman -Rs 软件包名
  • 如何知道完整包名:pacman -Ss 包名关键词,比如vim
    • pacman -Ss vim 下图就搜索到了两个,前面粉红色的是环境tag,优先安装ucrt64的(尤其是g++,cmake啥的编译工具链最好用ucrt64),但我不想用neovim就选下面的msys那个vim了,红线就是完整包名,安装即可pacman -S vim

安装必要的软件包

  • 安装编译工具链:pacman -S mingw-w64-ucrt-x86_64-toolchain

    • 这里面包含很多东西,gcc, g++, make等都有了
    • 修改mingw32-make.exe文件名为make.exe
      • cd /ucrt64/bin
      • ln -s mingw32-make.exe make.exe
  • 安装cmake: pacman -S mingw-w64-ucrt-x86_64-cmake

  • 安装git: pacman -S git

  • 安装其他需要的软件

设置win环境变量

  • 上面安装的东西,可执行文件一般在/ucrt64/bin/usr/bin/下,把这两个加到系统PATH即可(注意顺序),这样你在非msys2终端环境中也能使用这里安装的软件了,比如rm, vim啥的
  • 在msys2的终端环境中默认无法使用win环境变量的PATH, 有两种方式可以使用:
    • 方法1:在win环境变量中添加一个新变量MSYS2_PATH_TYPE,值为inherit
    • 方法2:通过安装位置的msys2_shell.cmd启动,并添加-full-path参数

在windows terminal中使用

官方doc https://www.msys2.org/docs/terminals/

修改windows terminal的配置json, 注意修改路径为你的安装位置

bash 复制代码
// This makes UCRT64 the default shell
"defaultProfile": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
"profiles": {
  "list":
  [
    // ...
    {
      "guid": "{17da3cac-b318-431e-8a3e-7fcdefe6d114}",
      "name": "UCRT64 / MSYS2",
      "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -ucrt64",
      "startingDirectory": "C:/msys64/home/%USERNAME%",
      "icon": "C:/msys64/ucrt64.ico",
      "font": 
      {
        "face": "Lucida Console",
        "size": 9
      }
    },
    {
      "guid": "{71160544-14d8-4194-af25-d05feeac7233}",
      "name": "MSYS / MSYS2",
      "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys",
      "startingDirectory": "C:/msys64/home/%USERNAME%",
      "icon": "C:/msys64/msys2.ico",
      "font": 
      {
        "face": "Lucida Console",
        "size": 9
      }
    },
    // ...
  ]
}

在vscode中使用

官方文档 https://www.msys2.org/docs/ides-editors/

如下内容添加到vscode的settings.json, 注意修改路径为你的安装位置

bash 复制代码
{
    "terminal.integrated.profiles.windows": {
        "MSYS2 UCRT": {
            "path": "cmd.exe",
            "args": [
                "/c",
                "C:\\msys64\\msys2_shell.cmd -defterm -here -no-start -ucrt64"
            ]
        }
    }
}
相关推荐
vortex510 分钟前
解决 VSCode 中 C/C++ 编码乱码问题的两种方法
c语言·c++·vscode
BillKu22 分钟前
Linux设置Nginx开机启动
linux·运维·nginx
baidu_3755288144 分钟前
光感传感器 芯片stk3171 linux驱动程序
linux·运维·服务器
飞腾开发者1 小时前
飞腾平台Arm NN软件栈安装使用指南
linux·运维·人工智能·机器学习·计算机视觉
夜暝1 小时前
Iotop使用
linux
鸠摩智首席音效师1 小时前
.NET Core 应用程序如何在 Linux 中创建 Systemd 服务 ?
linux·运维·.netcore
不是三毛没有半2 小时前
Centos 7 安装wget
linux
醉颜凉2 小时前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
hunandede2 小时前
FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
c++·ffmpeg·音视频
爱学习的大牛1232 小时前
通过vmware虚拟机安装和调试编译好的 ReactOS
c++·windows内核