Cygwin是什么?是Windows还是Linux?
原文作者:gentle_zhou
原文链接:https://bbs.huaweicloud.com/blogs/408674
最近在和客户交流的时候,一直以为客户的研发环境就是windows 7,直到和对面的研发团队交流的时候,得到的反馈是在windows 7系统上安装了Cygwin,和仅仅是Windows系统并不一致。
那么什么是Cygwin?
Cygwin是一个支持在Windows平台上运行的Unix环境,它最早的版本于1995年10月发布,最新的一个稳定版本3.4.6则于2023年2月14日发布。其目标是让Windows用户可以使用GNU和开源工具,如bash, gcc, less等。但是,Cygwin并不是一个支持运行原生Linux应用或者让Windows应用感知Unix功能的工具;它实际上是一个大型的GNU和开源工具集合,支持在windows上提供类似于Linux distribution 版本的功能(Linux_distribution的目标是让用户在不同的硬件平台上使用类似于Unix的功能和体验),允许用户在Windows系统上运行许多原本只能在Unix或Linux系统上运行的软件。
Cygwin由两部分组成:
- 一个C标准库形式的动态链接库(DLL,dynamic-link library),作为POSIX API的兼容层。
- 一个提供类似unix外观和操作感觉的被广泛使用的软件工具和应用程序集合。
Cygwin的抽象层DLL (cygwin1.dll)用于将部分Posix(可移植操作系统接口(Portable Operating System Interface of UNIX)调用转换成Windows的API调用,让用户可以在Windows系统上编译和运行一些基于Posix标准的源代码,而不需要修改或者重新编写。但需要注意,Cygwin不是一个完全符合Posix标准的环境,它只实现了部分Posix API,并且其中有一些是与Windows系统本身的API有冲突和限制的。同时,因为该DLL需要额外加载,可能会影响Windows系统的性能和稳定性,并且可能会与一些Windows程序产生兼容性问题。
Cygwin环境当前有两个版本;完整的64位版本和精简的32位版本(后者正在慢慢被淘汰)。再深入点说,Cygwin是由一个库和一个GNU开发工具链组成的;这个库实现了POSIX系统调用API的功能,它可以把部分POSIX调用转换成Windows系统调用,从而支持用户在Windows平台上可以运行大量与Unix系统类似的应用程序;而这个GNU开发工具链(包括GCC和GDB)则支持让用户进行软件开发。
在Cygwin上操作与在Windows上操作有什么区别?
- Cygwin提供了一个易用的命令行界面,让用户可以使用Unix风格的命令和脚本来操作文件和程序。而在Windows上操作,通常需要使用图形界面或者PowerShell等工具。
- Cygwin允许用户在Windows系统上运行许多原本只能在Unix或Linux系统上运行的软件,如Perl, Ruby, R等。而在Windows上操作,通常需要安装特定的版本或者使用模拟器等方式才能支持。
- Cygwin提供了一个兼容性层DDL,让用户可以在Windows系统上编译和运行一些基于Posix标准的源代码,而不需要修改或者重新编写。而在Windows上操作,通常需要使用特定的编译器或者修改源代码以适应Windows的API。
- 在两个环境里的编译器也是不同的。在Cygwin中,会提供GNU开发工具链(包括GCC和GDB),用于编译和调试C和C++程序;这些编译器遵循GNU标准和扩展。而Windows提供了Visual Studio等开发工具,用于编译和调试C和C++程序,这些编译器遵循Microsoft标准和扩展。
参考链接
- 云社区-华为云
- https://www.cygwin.com/
- https://en.wikipedia.org/wiki/Linux_distribution
相关文章:

Cygwin是什么?是Windows还是Linux?
原文作者:gentle_zhou 原文链接:https://bbs.huaweicloud.com/blogs/408674 最近在和客户交流的时候,一直以为客户的研发环境就是windows 7,直到和对面的研发团队交流的时候,得到的反馈是在windows 7系统上安装了Cygw…...

成集云 | 多维表格自动化管理jira Server项目 | 解决方案
源系统成集云目标系统 方案介绍 基于成集云集成平台,在多维表格中的需求任务信息自动创建、更新同步至 Jira Server 的指定项目中,实现多维表格中一表管理 Jira Server 中的项目进度。 维格表是一种新一代的团队数据协作和项目管理工具&…...

数据结构(Java实现)-排序
排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序ÿ…...

C++------vector【STL】
文章目录 vector的介绍及使用vector的介绍vector的使用 vector的模拟实现 vector的介绍及使用 vector的介绍 1、vector是表示可变大小数组的序列容器。 2、就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问和数…...

Matlab(变量与文本读取)
目录 1.变量(数据)类型转换 1.1 字符 1.2 字符串 1.3 逻辑操作与赋值 2.Struct结构体数组 2.1函数的详细介绍: 2.1.1 cell2struct 2.1.1.1 垂直维度转换 2.1.1.2 水平维度转换 2.1.1.3 部分进行转换 2.1.2 rmfield 2.1.3 fieldnames(查…...
WebGPU学习(8)---使用RenderBundle
RenderBundle是什么 通常情况下,WebGPU每次绘制时都需要向RenderPassEncoder注册渲染命令。处理此绘图命令比 WebGL 内部执行的类似处理更快。但是,如果可以省略此命令注册过程,则可以能够更快地绘制。RenderBundle 就是实现这一点的。 Ren…...

【前端】常用功能合集
目录 js跳转到新标签打开PDF文件js每十个字符换行 es6用表达式或变量名作为对象的属性名 vuev-for插值、:style、:class父组件加载完后再加载子组件keep-alive缓存跨域请求第三方接口跨域请求之callback(不建议)读取本地文件浏览器播放提示音audio jquer…...

chatgpt谈论日本排放污水事件
W...Y的主页 😊 代码仓库分享 💕 近日,世界发生了让人义愤填膺的时间——日本排放核污水。这件事情是那么的突然且不计后果,海洋是我们全人类共同的财产,而日本却想用自己一己私欲将全人类的安全置之度外,…...
Linux 查看当前目录大小
分析&回答 1. 查看当前目录下所有目录及子目录大小 du -h - . “.”代表当前目录下。也可以换成一个明确的路径 复制代码 2.查看当前文件目录各个文件夹大小 du -h --max-depth1 复制代码 查看指定目录 du -h --max-depth1 /path 复制代码 -h表示用K、M、G的人性化形…...

操作系统备考学习 day1 (1.1.1-1.3.1)
操作系统备考学习 day1 计算机系统概述操作系统的基本概念操作系统的概念、功能和目标操作系统的四个特征并发共享虚拟异步 操作系统的发展和分类操作系统的运行环境操作系统的运行机制 年初做了一个c的webserver 的项目,在学习过程中已经解除部分操作系统的知识&am…...

HTTP:http上传文件的原理及java处理方法的介绍
为了说明原理,以下提供一个可以上传多个文件的例子,html页面代码如下: <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…...
[实习笔记] 字符串练习 (将大量的字符串用int值编码,然后通过int值二分快速查找某个字符串)
目录 介绍分析完整代码: 免责声明: 本文章是实习期间的C练习题目,可能会存在大量错误,文章仅作为个人笔记供作者自己方便观看. 介绍 在一个游戏里,可能会出现大量的NPC, 这些NPC有很多都是相同的名字. 存放NPC名字的…...

EMC VNX2代一键关机方法
由于不正确的EMC VNX存储系统的关机导致客户业务中断,数据丢失的案例数不胜数。不正确的关机顺序,很容易造成内存中的数据丢失,进而导致dirty cache,然后系统的LUN和POOL就无法online,业务中断。本文仅仅对EMC 2代产品…...
提升系统管理:监控和可观察性在DevOps中的作用
在不断发展的DevOps世界中,深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念,为系统的健康和性能提供了宝贵的可见性。虽然这些术语经常可以互换使用,但它们代表着理解和管理复杂…...

IIS搭建本地电脑服务器:通过内网穿透技术实现公网访问的步骤指南
1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们…...

Linux系统中驱动入门设备树DTS(经典)
设备树(DTS:device tree source),字面意思就是一块电路板上设备如上图中CPU、DDR、I2C、GPIO、SPI等,按照树形结构描绘成的一棵树。按照策略和功能分离的思路,就是驱动代码(功能)和设备树DTS配置…...
关系型数据库与非关系型数据库类比
关系型数据库和非关系型数据库都有多种不同类型,每种类型都针对不同的数据存储需求和使用场景。以下是一些常见的关系型数据库和非关系型数据库类型: 关系型数据库类型: MySQL: 一种开源的关系型数据库管理系统,用于处…...

Ubuntu入门03——Ubuntu用户操作
1.Ubuntu如何进入root用户 进入ROOT用户的指令: Linux用su命令来切换用户: su root执行命令后,会提示你输入密码,而Ubuntu是没有设置root初始密码的。 若su命令不能切换root,提示su: Authentication failure&#x…...

输出图元(四)8-1 图元、屏幕坐标、指定二维世界坐标系统
用于图形应用的通用软件包称为计算机图形应用编程接口(CCAPI)它提供可以在C等程序设计语言中用来创建图形的函数库。如第3 章所指出的,函数库可以分成几种类型。创建图形时最先要做的一件事就是要描述显示场景的组成部分。图形的组成部分可以是树木和地形家具和墙壁…...

机器学习---决策树的划分依据(熵、信息增益、信息增益率、基尼值和基尼指数)
1. 熵 物理学上,熵 Entropy 是“混乱”程度的量度。 系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。 1948年⾹农提出了信息熵(Entropy)的概念。 从信息的完整性上进⾏的描述:当系统的有序…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...

数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...