当前位置: 首页 > news >正文

Cygwin 和MinGW 的区别与联系

Cygwin,是Cygnus出品,被Red Hat公司收购,名下的项目,目的为提供运行于windows平台的类Unix环境(以GNU工具为代表)。Cygwin提供了抽象层dll,用于将部分POSIX转换为Windows API调用,目录结构照搬Linux。

MinGW,Minimalist GNU for Windows,用于开发原生(32位)Windows应用的开发环境,包括了gcc,g++等工具。

  • MinGW 是让Windows 用户可以用上GNU 工具,比如GCC。
  • Cygwin 提供完整的类Unix 环境,Windows 用户不仅可以使用GNU 工具,理论上Linux 上的程序只要Cygwin 重新编译,就可以在Windows 上运行。
  • 如果程序只用到C/C++ 标准库,可以用MinGW 或Cygwin 编译。
  • 如果程序还用到了POSIX API,则只能用Cygwin 编译。
  • 程序经MinGW 编译后可以直接在Windows 上面运行。
  • 程序经Cygwin 编译后运行,需要依赖安装时附带的cygwin1.dll。

MinGW 提供了一套完整的开源编程工具,适用于开发本地 MS-Windows 应用程序,并且不依赖于任何第三方 C-Runtime DLL。(它确实依赖于微软自己提供的一些 DLL,作为操作系统的组件;其中最著名的是 MSVCRT.DLL,微软的 C 运行库。此外,线程应用程序必须随附一个可免费分发的线程支持 DLL(作为 MinGW 本身的一部分提供)。

Cygwin 是

一个工具集合,为 Windows 提供一个 Linux 外观和感觉的环境。
一个 DLL(cygwin1.dll),作为 Linux API 层,提供大量 Linux API 功能。

那么,它不是一个开发环境吗?当然是。它也有用于编译、调试和 make 的 GCC 工具链。它拥有 Linux 中更完整的实用程序集。那么这两者有什么区别呢?

Cygwin 增加了一个 Linux API 层来模拟 Linux 功能。这也包括 POSIX 标准。而 MinGW 则旨在为 Windows 平台提供本地 GCC 编译器。在实用程序方面,Cygwin 试图为你提供一套最完整的 Linux 功能,而 MinGW 则旨在提供简约的 Linux 感觉。下面我们就来谈谈两者的区别:

Cygwin = 让我们把 unix 放到 windows 上,尽可能多地使用本地 unix 的东西
MingW = 让 unix 尽可能远离 windows,使用尽可能多的本地 windows 资源。

如果您使用 MinGW 编译程序,那么生成的二进制文件就可以发布,而无需依赖任何外部 DLL。而使用 Cygwin 编译的程序则需要 cygwin1.dll 才能运行。不过,Cygwin 支持 POSIX,但 MinGW 却不支持。

上述内容取自MinGW and Cygwin - An Introduction and Differences | electroBucket

进行了适量翻译,不一定翻译的对。

Cygwin Installation

MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net

两个工具在上面链接。

gcc编译选项可以看:

gcc编译选项-o和-c介绍_gcc -o-CSDN博客

相关文章:

Cygwin 和MinGW 的区别与联系

Cygwin,是Cygnus出品,被Red Hat公司收购,名下的项目,目的为提供运行于windows平台的类Unix环境(以GNU工具为代表)。Cygwin提供了抽象层dll,用于将部分POSIX转换为Windows API调用,目…...

WebSocket Day03 : SpringMVC整合WebSocket

前言 在现代Web应用程序中,实时性和即时通信变得越来越重要。传统的HTTP请求-响应模式无法满足实时数据传输和双向通信的需求。随着技术的发展,WebSocket成为了一种强大而灵活的解决方案。 WebSocket是HTML5提供的一种新的通信协议,它通过一…...

Electron + VUE3 桌面应用,主进程和渲染进程通信

之前写过篇主进程和渲染进程之间的通信,这里主要是记录一下VUE版本的应用,主进程和渲染进程之间的通信。思路是一样,唯一不同的是代码。 在开发Electron应用的时候,从安全的角度来考虑,尽量不要在渲染进程中,直接调用ElectronAPI,因此我们需要预加载JS脚本,在这个脚本…...

使用腾讯云轻量服务器安装AList

新人有免费两个月试用轻量服务器,使用云服务器商自带的webshell登录; 我这儿用docker安装Alist,因为服务器没自带docker,所以具体安装docker centos7.0最快速安装docker的方法 通过 Docker 部署 Alist 命令: docke…...

边缘计算助力低速无人驾驶驶入多场景落地快车道

自动驾驶刮起的风,如今正吹向低速无人驾驶赛道。近期不完全统计显示,当前A股及港股正在排队IPO的自动驾驶相关企业共有12家,其中实现盈利的企业仅两家,而且实现盈利的两家企业最主要的收入并不完全源于自动驾驶领域。 相比之下&am…...

谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI

🦉 AI新闻 🚀 谷歌推出基于AI的产品图像生成工具,帮助商家提升广告创意能力 摘要:谷歌推出了一套基于AI的产品图像生成工具,使商家能够利用该工具免费创建新的产品图像。该工具可以帮助商家进行简单任务(…...

python学习10

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...

【JAVA学习笔记】59 - JUnit框架使用、本章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/homework JUnit测试框架 1.基本介绍 1. JUnit是一个Java语言的单元测试框架 2.多数Java的开发环境都已经集成了JUnit作为单元测试的工具 2.如何使用 创建方法后&#x…...

3D 线激光相机的激光条纹中心提取方法

论文地址:Excellent-Paper-For-Daily-Reading/application/centerline at main 类别:应用——中心线 时间:2023/11/06 摘要 线激光条纹中心提取是实现线激光相机三维扫描的关键,根据激光三角测量法研制了线激光相机,基于传统 Steger 法对其进行优化并提出一种适用于提…...

云尘靶场-Tr0ll-vulhub

直接fscan扫描 发现这里有一个ftp 我们等等看 首先去nmap扫描端口 nmap -A -p- 172.25.0.13 --unprivileged 这里使用wsl ftp ssh 和80 然后我们继续继续目录扫描 dirb 出来没什么用处 所以我们继续去看 流量包 流量包分析 首先看tcp ->分析->追踪流 这里是f…...

Cuda cmake支持C++17

项目中cuda的编译需要使用到C17的特性,但是自己在设置C17的时候,一直不生效,最后找到一种生效的方式 1. 设置CMAKE_CUDA_STANDARD cmake_minimum_required(VERSION 3.19)project(demo)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CUDA_STANDARD …...

【黑马程序员】Git

文章目录 前言一、Git 概念二、Git 安装与常用命令三、Git 远程仓库四、在 IDEA 上操作 Git总结 前言 一、Git 概念 二、Git 安装与常用命令 三、Git 远程仓库 四、在 IDEA 上操作 Git 总结...

季节性壁炉布置:让您的家温馨如冬季仙境

1、主题化的壁炉装饰:根据不同节令或假日,您可以为壁炉布置不同的主题。比如,在圣诞季节,您可以放置圣诞装饰品,烛台和彩灯,打造温馨的圣诞壁炉。在万圣节,尝试用各种吓人的装饰,如假…...

Chisel-xcode 下的调试神器

LLDB 是一个有着 REPL 的特性和 C ,Python 插件的开源调试器。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。调试器允许你在程序运行的特定时暂停它,你可以查看变量的值,执行自定的指令,并且按照你所认为合适的步骤来操作…...

C语言运算符优先级一览表

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式) 函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成…...

C#在.NET Windows窗体应用中使用LINQtoSQL

目录 一、新建Windows窗体应用并添加LINQtoSQL类 二、错误信息CS0234 三、添加扩展包让Windows窗体应用支持LINQtoSQL类 默认安装的背景下,新建的Windows窗体应用是不支持LINQtoSQL类的。现象是资源管理器里的依赖项中默认的安装不能自动生成支持system.data.lin…...

Unity json反序列化为 字典存储

当在Unity游戏中需要加载和管理游戏数据,通常使用JSON文件是一种常见的方法。在本篇博客中,我们将深入探讨如何使用C#和Unity的JSON反序列化功能来实现这一目标。我们可以使用Unity的JsonUtility来反序列化JSON数据并将其映射到自定义的C#数据结构中。 …...

助力青少年学习,亚马逊云科技2024年全球人工智能和机器学习奖学金计划正式启动

云未来将以何种方式发展?方向握在意气风发的少年们手中。近日,亚马逊云科技全球人工智能和机器学习(AI和ML)奖学金计划在中国区的首次颁奖以及2024年启动仪式在北京中学正式举行,有45名学子凭借杰出的学业成绩、对人工…...

华为机试练习题:HJ13 句子逆序

1、完整题目 HJ13 句子逆序 描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 数据范围:输入的字符串长度满足…...

windows环境下安装Java过程(免登录Oracle官网下载java)

下载路径 oracle官网: java下载路径 Oracle共享账号可下载JDK: 指路 安装流程 执行下载后的jdk的可执行文件一路next下去, 可以自定义安装路径添加环境变量, 两个地方需要添加 在cmd中输入java -version 进行验证,…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...

【Qt】控件 QWidget

控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态:enabled几何:geometrywindows frame 窗口框架的影响 窗口标题:windowTitle窗口图标:windowIconqrc 机制 窗口不透明度:windowOpacity光标:cursor…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递

在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...

开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py

👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 ultralytics-models-sam 1.sam-modules-tiny_encoder.py2.数据处理流程3.代码架构图(类层次与依赖)blocks.py: 定义模型中的各种模块结构 ,如卷积块、残差块等基础构建…...

调试快捷键 pycharm vscode

目录 调试快捷键 pycharm vscode 修改快捷键 方法 1:通过菜单打开 方法 2:用快捷键打开 调试快捷键 pycharm Resume Program F9 Step Over F8 两个离的比较近,比较方便,比vscode的好。 vscode Continue F5 改为F9 S…...

自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器

🔍 背景介绍 在渗透测试与红队评估过程中,DNS 外带(DNS Exfiltration) 是一种常见且隐蔽的通信通道。由于多数目标环境默认具备外网 DNS 解析能力,即便在 无回显、无文件上传权限 的条件下,仍可通过 DNS 请…...

FMC STM32H7 SDRAM

如何无痛使用片外SDRAM? stm32 已经成功初始化了 STM32H7 上的外部 SDRAM(32MB) 如何在开发中无痛使用SDRAM 使它像普通 RAM 一样“自然地”使用? [todo] 重要 MMT(Memory Management Tool) of STM32CubeMx The Memory Management Tool (MMT) disp…...