Windows编译环境介绍

简介: Windows编译环境介绍

windows 环境下编译 C/C++ 项目,会涉及到以下4个软件,或者说是工具套件。

1,MSVC :Windows 原生编译套件,全称 Microsoft Visual C++。vs2019 默认就是使用这个编译套件。

2,MinGW :GCC 编译工具链 在 Windows 平台的移植。

3,Cygwin :不仅仅是把 GCC编译工具链移植到 Windows 平台,还有相关的Linux 命令也有移植,ls,mkdir,clear 之类的命令也有移植。

4,MSYS2 :集合 MinGW 的GCC 编译工具 链 跟 Cygwin 的配套工具。


虽然 MinGW 跟 Cygwin 都提供了 gcc 编译器,但是MinGW 的 gcc.exe 是更原生一些的,没有依赖 cygwin1.dll 。而 Cygwin 的 gcc.exe 依赖 cygwin1.dll。

Cygwin 平台大部分的软件都依赖 cygwin1.dll,这个 dll 是一个 POSIX 模拟层,模拟了很多 Linux 的函数,fork, spawn, signals, select, sockets 。

因为 Cygwin 有模拟层,所以他的兼容性跟移植性会更好一些。也就是说如果你要移植一个Linux的软件,用 Cygwin 开发效率会更高一些。

而 MinGW 的 gcc.exe 实际上跟 MSVC 的 cl.exe 是类似的,编译出来的都是原生的windows程序。

然后 MSYS2 使用的编译工具链是 MinGW 的 gcc,但是 ls,mkdir,clear 之类的命令 是基于 Cygwin 修改过来的。

MSYS2 更注重于编译生成原生的 Windows 应用,而 Cygwin 专注于移植,基于 cygwin1.dll 模拟层来移植。

例如 MSYS2 使用的 C语言运行时库 是 MSVCR,而 Cygwin 用的是 newlib 运行时。


提醒一下:上面 4个工具,主要都是用来 编译 生成 Windows 的 lib 静态库,dll 动态库,或者 exe 可执行文件的。他们不能生成 Linux 平台的 ELF 格式的可执行文件或者静态库动态库。也不能把 Linux 的ELF可执行文件放在这些平台运行,要运行必须用源码重新编译成 exe。

可以把上面 4 个软件看成是为了 Windows 服务的。

上面的编译器如果混用,会带来一些 ABI 兼容的问题,例如 MinGW 的 gcc 编译器生成的 dll 动态库 给 MSVC 的 cl.exe 使用。这些内容在后面都会有所讲解。


参考资料:

1,《什么是msys2》

2,《使用 msys2 的软件》

3,《什么是 MinGW》

4,《什么是 Cygwin》


目录
相关文章
|
3月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
3月前
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
280 0
|
1月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
53 2
|
1月前
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
2月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
1月前
|
Windows
Windows系统环境编写DOS批处理文件
Windows系统环境编写DOS批处理文件
|
1月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
161 0
|
3月前
|
监控 机器人 Unix
GoLand——windows下如何编译Linux二进制文件
GoLand——windows下如何编译Linux二进制文件
52 1
GoLand——windows下如何编译Linux二进制文件
|
3月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
3月前
|
并行计算 TensorFlow 算法框架/工具
Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
本文介绍了如何在Windows 11操作系统上,配合CUDA 12.0和RTX4090显卡,通过创建conda环境、安装特定版本的CUDA、cuDNN和TensorFlow 2.10来配置TensorFlow GPU环境,并提供了解决可能遇到的cudnn库文件找不到错误的具体步骤。
370 3