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

文章目录

    • 为什么用这个msys2
    • 下载、doc
    • 安装,很简单
    • 初次运行,做些配置
    • 更新
    • 软件安装与卸载方法
    • 安装必要的软件包
    • 设置win环境变量
    • 在windows terminal中使用
    • 在vscode中使用

为什么用这个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%,等着,或者尝试翻墙

正在准备安装…

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

正在解压组件......
正在提取“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

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

      # [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, 注意修改路径为你的安装位置

// 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, 注意修改路径为你的安装位置

{
    "terminal.integrated.profiles.windows": {
        "MSYS2 UCRT": {
            "path": "cmd.exe",
            "args": [
                "/c",
                "C:\\msys64\\msys2_shell.cmd -defterm -here -no-start -ucrt64"
            ]
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/40742.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

03.MySQL——索引和事务

索引 索引的概念 索引可以提高数据库的性能。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是查询速度的提高以插入、更新、删除的速度为代价。索引的价值在于提高一个海量数…

【Ubuntu】安装docker-compose

要在Ubuntu上安装Docker Compose,可以按照以下步骤进行操作: 下载 Docker Compose 二进制文件: sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/loc…

【C++ 学习记录】(一)--你好,C++

写在前面 工作需要,重学C,实在是太痛苦了,大二的时候应试就没学会!! 进入正题 1.编程是怎么回事 C在百科上的解释是一种静态数据类型检查 的、支持多种编程范式(面向过程与面向对象等)的通用…

想知道搭建知识库有什么重点?看这篇就够了

在目前这个提倡无纸化的时代,搭建一个知识库已经是一种潮流。无论是个人还是企业来说,都是特别重要的一个工具。今天looklook就从搭建知识库的重点这方面来展开,详细地告诉大家该如何成功搭建一个完善的知识库。 搭建知识库的重点 1.建立素材…

ubuntu版本Linux操作系统上安装键盘中文输入法

要在ubuntu版本Linux操作系统上安装键盘中文输入法 可以按照以下步骤进行操作: 1、Linux终端输入:sudo apt-get install ibus-pinyin 这将安装一个常用的中文输入法 “ibus-pinyin”。 2、重新启动系统:为了使输入法生效,需要…

【C语言+sqlite3 API接口】实现水果超市

实验内容: 假如我家开了个水果超市,有以下水果,想实现自动化管理,扫描二维码就能知道当前的水果状态,进货几天了, 好久需要再次进货,那些水果畅销,那些水果不畅销,那些水…

第一次实操Python+robotframework接口自动化测试

目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离! robot framework 的安装不过多说明,网上资料比较太多~ 实例:!!!&#xff01…

开源的短视频生成和编辑工具 Open Chat Video Editor

GitHub - SCUTlihaoyu/open-chat-video-editor: Open source short video automatic generation tool

KUKA机械臂的导纳控制

KUKA机械臂的导纳控制 在近期的实验中,需要根据传感器的给出的实时位置信息进行导纳控制,并实时改变导纳控制的参数。由于KUKA自带的实时导纳控制模型无法实时修改参数,因此尝试了自己实现导纳控制。网上这方面的资料比较少,整理…

Vue自定义指令

需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。 需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。 自定义指令函数式v-big: &l…

Flutter 小技巧之滑动控件即将“抛弃” shrinkWrap 属性

相信对于 Flutter 开发的大家来说, ListView 的 shrinkWrap 配置都不会陌生,如下图所示,每当遇到类似的 unbounded error 的时候,总会有第一反应就是给 ListView 加上 shrinkWrap: true 就可以解决问题,那为什么现在会…

2023云曦期末复现

目录 WEB sign SSTI serialize WEB sign 有10000个 进行bp爆破 能发现 410 和 414长度 还有 420 410 414存在16进制的字符 拼凑出来为 \x66\x6c\x61\x67\x7b\x61\x63\x63\x39\x39\x66\x39\x30\x34\x66\x30\x65\x61\x66\x61\x34\x31\x63\x30\x36\x34\x33\x36\x38\x31\x3…

手机外壳缺陷视觉检测软硬件方案

单独使用一种光源效果图 同轴光会出现亮度不够的情况;回形面光因为光源中间的圆孔会使图像有阴影,造成图像效果不均衡,所以不采用单独光源打光 使用同轴回形面光源效果图 回形光源照亮产品要寻找的边缘,同轴光源起到补光的作用&a…

【100天精通python】Day5:python 基本语句,流程控制语句

目录 1. 条件语句 1.1 if语句 1.2 if-else语句 1.3 if-elif-else语句 2 循环语句 2.1 for循环 2.2 while循环: 3 跳转语句 3.1 break语句 3.2 continue语句 3.3 pass语句 4 异常处理语句(try-except语句) 5 语句嵌套 5.1 条…

Spring框架概述及核心设计思想

文章目录 一. Spring框架概述1. 什么是Spring框架2. 为什么要学习框架?3. Spring框架学习的难点 二. Spring核心设计思想1. 容器是什么?2. IoC是什么?3. Spring是IoC容器4. DI(依赖注入)5. DL(依赖查找&…

2023-7-13-第十八式观察者模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

2023年iOS App Store上架流程详解(上)

目录 1.注册开发者账号 2.登录并配置人员 3.申请证书和配置文件 一.证书管理​ 二.新建证书​ 三.使用appuploader服务同步证书​ 1)申请证书 2)添加Identifiers和配置App ID 3)申请配置文件 1.在Xcode项目中配置签名 2.上传应用包…

谷歌和加州大学伯克利分校的“改革者”在单个GPU上运行64K序列

转换器模型是自然语言处理(NLP)研究领域越来越流行的神经网络架构,大型变压器可以在许多任务上实现最先进的性能。代价是转换器过多的计算消耗和成本,尤其是对于长序列上的训练模型。 谷歌和加州大学伯克利分校的研究人员最近发表…

设计模式——解释器模式

解释器模式 定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的模式,现实项目中用得较少。 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句…

Java 设计模式——观察者模式

目录 1.概述2.结构3.案例实现3.1.抽象观察者3.2.观察对象3.3.具体观察者3.4.具体观察对象3.5.测试 4.优缺点5.使用场景6.JDK 源码解析——Observable / Observer6.1.Observable 类6.2.Observer 接口6.3.案例 1.概述 观察者模式 (Observer Pattern) 是一种行为型设计模式&#…