程序员必备工具之MSYS2

摘要:
简介:msys2是一个跨平台编译套件。它模拟Linux编译环境,支持mingw32和mingw64的集成,并可以在Windows上轻松编译和运行一些开源Linux项目。msys2的安装目录结构如下:我们可以看到,在上图中,有四个文件夹:clang32、clang64、mingw32和mingw64。默认情况下,这四个文件夹是空的,我们可以根据需要下载相应的编译包。这个编译环境继承了msys2自己的环境,而不是独立的。

简介

msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。
类似的跨平台编译套件有:msyscygwinmingw
程序员必备工具之MSYS2第1张

优势

  1. 相对于 cygwinmsys 等环境,它支持 pacman 包管理器,这意味着你可以很方便的安装所需要的软件包和开发库,而不需要自己去找源码编译
  2. 支持多种编译环境,可以很方便的整合 mingwclang,自身也是基于cygwin的一个简单开发环境,可以通过 pacman 包管理器很方便的安装对应编译环境的开发库。msys2的安装目录结构如下:
    程序员必备工具之MSYS2第2张
    我们可以看到上面的图片中,自带 clang32,clang64,mingw32和mingw64 这四个文件夹,默认这四个文件夹是空的,我们可以根据需要自行的下载对应的编译套件放入。比如我们放入了mingw编译套件,就可以使用mingw32.exe和mingw64.exe来方便的运行对应的编译环境。这个编译环境是继承了 msys2 自身环境的,而不是独立的。

演示

这里使用Cmder来演示msys2功能,如果不知道Cmder是什么,请看上一篇文章
程序员必备工具之MSYS2第3张

小贴士

  1. 建议搭配Cmder进行使用,这样会很爽
  2. 设置msys2代理,有时候国内的网络环境可能访问很慢
    打开 /etc/profile 文件,然后写入
    # proxy settings
    export HTTP_PROXY="127.0.0.1:1080"
    export HTTPS_PROXY=$HTTP_PROXY
    export http_proxy=$HTTP_PROXY
    export https_proxy=$HTTP_PROXY
    
    这样下载软件包就舒服多了
  3. 需要注意msys2和ming32是两套环境,上面的演示gif也说明了这个问题,所以一定要注意按需下载,类似gcc,g++这种都是两套的,但是configure程序只有msys2自带的那个,它自己会根据你打开的命令行环境来生成对应编译环境的Makefile,调用对应的gcc等程序
  4. 如果出现奇怪的编译错误,那么可以检查一下是不是现有的编译环境某些程序和msys2自身环境有冲突,因为其他编译环境一定程度上继承了msys2自身的环境。
  5. 如果编译的时候需要一些老的开发库,那么可以访问msys2的官方仓库网址,一般可以在这里找到老的开发库安装包,然后我们下载下来使用pacman本地安装即可

下载地址

https://www.msys2.org/

免责声明:文章转载自《程序员必备工具之MSYS2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Swing菜单与工具栏(二)Java中枚举的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

迅为龙芯2K1000开发板系统编译编译Linux内核

龙芯目前主推的内核版本有 linux‐2.6.32 和 linux‐3.10 两个版本,其中 linux‐2.6.32 主要用于龙芯1号 CPU、龙芯2H和龙芯3A , linux‐3.10 主要用于龙芯 3A2000 和 2K 以上的 CPU 版本。LS2K1000 使用的内核版本为 linux‐3.10。交叉编译器版本为 gcc‐4.9.3‐64‐gn...

移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)

目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。   移植以到 JZ2440 为例,使用韦老大提供的 ubuntu9.10 虚拟机作为移植环境。当然,...

gcc编译

gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。 语法 gcc(选项)(参数) 选项 -o:指定生成...

android平台中编写jni模块的方法(3)

这篇文章来说说ndk的使用方法,其实主要是关于ndk的一些编译选项的研究和翻译(其实人家google的文档已经说的很清楚了)。偶选用的测试环境是 slackware 12.0 + android 1.5 r1 for linux + jdk 1.6.0_12,ndk选用的是android 1.5 ndk r1这个版本的(直接解压就行,免安装的)。1、从nd...

在Qt中手动添加ui文件

1.怎么添加UI文件 我们知道在新建项目的时候,可以选择添加*.ui和不添加两种。 当添加上ui 文件的时候,我们可以利用designer来添加控件,直观上看到界面的布局,控件的外观 如果没有添加ui文件,那么久只能用代码生成。 那么如果有一个现有的类(不带ui文件),可否给他新增ui文件呢? 答案是可以。毕竟qt designer form 的简介就是...

VSCode编译CMake工程报错c++: internal compiler error: Killed (program cc1plus)

现象 使用VSCode+CMake构建C++工程时只能编译Release版本,无法编译Debug版本。 报错提示c++: internal compiler error: Killed (program cc1plus) 解决 编译过程中内存不足 方案1:增加内存 如果在虚拟机运行Linux可以增加虚拟机的分配内存或增大swap空间 具体方法可以参考这篇文...