当前位置:网站首页>常用工具链和虚拟环境-msys2与mingw
常用工具链和虚拟环境-msys2与mingw
2022-08-03 01:12:00 【有一点甜】
发散
没想到学习LVGL的第一步,竟然是介绍工具链和虚拟环境吧?哈哈,工欲善其事必先利其器,了解自己的使用工具将事半功倍。先想想,我们的工具大概都运行在哪里?大概就三个:windows、UNIX、Linux。编译出来的程序运行在哪里?大概有四个:windows、UNIX、Linux、嵌入式硬件。也就是说,在windows、UNIX、Linux(大概率都是X86)上运行的程序,直接在其之上部署好开发工具,然后开发就好了。而嵌入式硬件(ARM、RISC-V、PPC、MIPS)上运行的程序,则需要在其它平台上部署开发工具,为啥?因为嵌入式硬件一般连操作系统都没有哇。。。即使有,受限于硬件,大概率也没有丰富的资源让你部署开发工具。因此,交叉工具链环境,就是需要的了。
大概总结了一下,主要有以下需要了解:
- Cygwin
- msys以及msy2
- minGW与MinGW-w64
- WSL
- TDM
- 各版本工具链
msys与msys2
msys2官网:MSYS2
Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。与Cygwin大致相当。MinGW 本身仅代表工具链,而MinGW 开发者从曾经比较旧的 Cygwin 创建了一个分支,也用于提供类 Unix 环境。但与 Cygwin 的大而全不同,MSYS 是冲着小巧玲珑的目标去的,所以整套 MSYS 以及 MinGW,主要以基本的 Linux 工具为主,大小在 200M 左右,并且没有多少扩展能力。
MSYS 是用于辅助 Windows 版 MinGW 进行命令行开发的配套软件包,提供了部分 Unix 工具以使得 MinGW 的工具使用起来方便一些。如果不喜欢庞大的 Cygwin,而且使用不多,可以试试。不过喜欢完整体验、不在乎磁盘占用等等,还是推荐 Cygwin 而不是 MSYS。
MSYS2,由于 MinGW 万年不更新,MSYS 更是,Cygwin的许多新功能 MSYS 没有同步过来,于是 Alex 等人建立了新一代的 MSYS 项目。仍然是 fork 了 Cygwin(较新版),但有个更优秀的包管理器 pacman,有活跃的开发者跟用户组,有大量预编译的软件包(虽然肯定没有Cygwin多)……对于不喜欢庞大的 Cygwin 的用户而言,推荐试试 msys2。
MSYS2是一个工具和库的集合,为您提供了一个易于使用的环境,用于构建、安装和运行本地 Windows 软件。它由命令行终端 mintty、 bash、版本控制系统(如 git 和 subversion)、工具(如 tar 和 awk)甚至构建系统(如 autotools)组成,所有这些都基于修改后的 Cygwin 版本。尽管其中一些核心部分是基于 Cygwin 的,MSYS2的主要重点是为本地 Windows 软件提供一个构建环境,使用 Cygwin 的部分保持在最低限度。MSYS2为 GCC、 mingw-w64、 CPython、 CMake、 Meson、 OpenSSL、 FFmpeg、 Rust、 Ruby 等提供了最新的本机构建。
msys2存在的意义:
- 提供了一个易于使用的环境,用于构建、安装和运行本地 Windows 软件
- 简单体验终端或linux命令
MinGW与MinGW-w64
MinGW-w64官网:MinGW-w64
Mingw-w64是最初 Mingw.org 项目的一个进步,创建该项目是为了支持 Windows 系统上的 GCC 编译器。为了支持64位和新的 API,它在2007年分叉了它。从那时起,它得到了广泛的使用和分布。
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。以上是 MinGW 的介绍,MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。
说白了MinGW就是一个运行于windows下的,并且编译出的程序也是可以运行于windows下的GNU工具链。
MinGW的功能:
- 编译windows程序
- 编译运行在windows上的交叉工具链
区别与差异
MSYS2 和 MinGW 都提供 gcc,但是属于两个完全不同的工具链。前者属于 msys2-devel ,后者属于 mingw-w64-$arch-toolchain。
使用 mingw-gcc 编译的目标文件是原生的,而使用 msys2-gcc 编译的目标文件依赖于 msys-2.0.dll 提供的虚拟 POSIX 环境。这么说来,msys2和cygwin更像,基本上是cygwin的缩小版。
边栏推荐
猜你喜欢

“蔚来杯“2022牛客暑期多校训练营4 补题题解(N)

嵌入式开发:嵌入式基础——’ ’和” ”的区别

从 npm 切换到 pnpm,真香!

一个循环,两个循环问题的思考及复现

Violence recursion to dynamic programming 08 (pony go chess)

全栈----跨域

torchvision.datasets.ImageFolder使用详解

[Example构造方法增加notNull参数,默认false,允许值为null,值为null的时候不加入到条件中

微信小程序--》条件与列表渲染以及WXSS模板样式

JSP第一篇 -----JSP九大内置对象(隐式对象)和四大域对象
随机推荐
暴力递归到动态规划 06 (剑指 Offer II 095. 最长公共子序列)
暴力递归到动态规划 08(小马走象棋)
236. 二叉树的最近公共祖先
做快乐的事情
7.31
常见钓鱼手法及防范
容联云发送验证码
文树勋率长沙市人大常委会主任会议成员莅临麒麟信安调研数字经济发展情况
一个人的精力
Wireshark data capture and analysis of the transport layer protocol (TCP protocol)
扩展卡尔曼滤波【转】
有趣简单的M2处理器性能实验:Swift与C代码执行速度的比较
VS Code 这么牛,再次印证了一句名言
30岁测试开发年薪不足80万,还要被面试官diss混得太差?
如何备考PMP才能一次通过?
ES6 新特性:Class 的基本语法
20、商品微服务-web层实现
PyCharm中常用的快捷键用法详解
吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第二节:神经网络基础(上)
图文详细解决IDEA使用Debug模式启动项目一直转圈圈跑起不来(亲测可以)