• 常用工具链和虚拟环境-Cygwin


    发散

    没想到学习LVGL的第一步,竟然是介绍工具链和虚拟环境吧?哈哈,工欲善其事必先利其器,了解自己的使用工具将事半功倍。先想想,我们的工具大概都运行在哪里?大概就三个:windows、UNIX、Linux。编译出来的程序运行在哪里?大概有四个:windows、UNIX、Linux、嵌入式硬件。也就是说,在windows、UNIX、Linux(大概率都是X86)上运行的程序,直接在其之上部署好开发工具,然后开发就好了。而嵌入式硬件(ARM、RISC-V、PPC、MIPS)上运行的程序,则需要在其它平台上部署开发工具,为啥?因为嵌入式硬件一般连操作系统都没有哇。。。即使有,受限于硬件,大概率也没有丰富的资源让你部署开发工具。因此,交叉工具链环境,就是需要的了。

    大概总结了一下,主要有以下需要了解:

    1. Cygwin
    2. msys以及msy2
    3. minGW与MinGW-w64
    4. WSL
    5. TDM
    6. 各版本工具链

    Cygwin

    Cygwin官网:Cygwin

    Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件。该公司开发的著名工具还有eCos,不过现已被redhat收购)。它对于学习UNIX/Linux操作环境,或者从UNIX到Windoinuxws的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。

    Cygwin 提供了一套抽象层 dll,用于将部分 Posix 调用转换成 Windows 的 API 调用,实现相关功能。cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是Cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于 win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。

    因此,Cygwin是运行于Windows平台的POSIX“子系统”,提供Windows下的类Unix环境,并提供将部分 Linux 应用“移植”到Windows平台的开发环境的一套软件。按照开玩笑的话来讲,Cygwin 基本上就是传说中的 GNU/NT 系统(对照 GNU/Linux,GNU/BSD,GNU/HURD)。

    那么Cygwin能干啥呢?常见的应用场合包括但不限于:

    1. shell命令行使用,如果你想在windows上体验Linux命令,又不想安装虚拟机,那么使用Cygwin吧
    2. 交叉工具链编译,Cygwin环境中已移植好了gcc等开发工具,大量的交叉工具链(如arm-none-gnu-eabi-gcc、arm-none-gnu-eabi-binutils)也可以在Cygwin中制作。
    3. 程序移植,把符合POSIX标准的程序移植到Windows下,还有更多正在由个人、社区、商业公司、研究机构不断贡献的开源自由软件,造福广大Windows用户,利用已有的GNU、UNIX、Linux软件会使程序移植越来越容易。

    安装Cygwin

    通过运行 setup-x86 _ 64. exe(不是一键就能安装,它只是一个下载器) 安装 Cygwin。请记住,发行版中的各个包是与 DLL 分开更新的,因此 Cygwin DLL 版本不适合作为一般的 Cygwin 发行版版本号。

  • 相关阅读:
    [数据可视化] 柱状图
    计算机视觉新巅峰,微软&牛津联合提出MVSplat登顶3D重建
    python 之利用plt.legend()添加图例
    spring高级源码50讲-43-50(spring续)
    Ray tracing 光线追踪 之 embree ,从入门到精通 01 安装与体验
    Go语言的[GPM模型]
    CKA考题 [k8s1.21]
    redis分布式锁
    JavaScript -- 多种数组深拷贝和浅拷贝的方法的总结
    【AI】机器学习——支持向量机(线性模型)
  • 原文地址:https://blog.csdn.net/xuxuluo/article/details/126216629