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

gcc与mingw64版本介绍

三类编译器

GCC,全称为GNU Compiler Collection,是一个强大的编译器集合,它不仅支持C和C++语言,还支持Fortran、Ada、Java等多种编程语言的编译。在GCC工具链中,gcc和g++是两个核心的编译器工具。gcc是专门用于编译C语言程序的编译器,而g++则是用于编译C++程序的编译器。尽管两者都可以处理C和C++文件,但它们在编译时的行为有所不同。gcc在编译.cpp文件时会按照C语言的规则进行,而不会链接C++的标准库,而g++则会按照C++的规则进行编译,并默认链接C++的标准库。因此,在实际开发中,通常推荐使用gcc来编译C程序,而使用g++来编译C++程序,以确保正确链接到相应的库并利用C++语言的特性。

MSVC,即Microsoft Visual C++,是微软提供的C/C++编译器,它是Visual Studio集成开发环境的一部分。MSVC主要针对Windows平台进行优化,提供了与Windows API和.NET框架紧密集成的优势,并且拥有丰富的调试工具和图形界面,适合Windows平台的开发者使用。

Clang,是一个由Apple公司开发的C语言家族编译器前端,属于LLVM项目的一部分。Clang以其模块化设计和优秀的静态代码分析能力而受到青睐,支持多种操作系统和处理器架构,并且是开源的,遵循BSD许可证,由LLVM社区维护和更新。

windows下的GCC—MinGW

MinGW,即Minimalist GNU for Windows,是一个为Windows操作系统提供的GNU工具集,它允许开发者在Windows平台上使用GCC编译器和其他GNU开发工具来编译和运行C和C++程序。MinGW提供了一个轻量级的运行时环境,包括必要的头文件、库和编译器前端,使得开发者可以在Windows上享受到类似于Unix/Linux的开发体验。简单的说,就是将GCC移植到了windows下。

MinGW可以通过MSYS2安装,也可以通过WinLibs - 适用于 Windows 的 GCC+MinGW-w64 编译器 --- WinLibs - GCC+MinGW-w64 compiler for Windows下载压缩包安装

或者通过发行版 · niXman/mingw-builds-binaries下载压缩包来安装。

这里有多个版本:

其中:

  • x86_64开头的适用于64位机器
  • posix和win32和mcf指的是线程模型,一个明显的区别是线程的API不同,使用posix的可移植性应该会更好,因为接口跟在linux下的接口一样,并且支持C++11的std::thread。
  • MSVCRT(Microsoft Visual C++ Runtime)默认在所有Windows 版本上都可用,但由于向后兼容性问题,它停留在过去,不兼容 C99,并且缺少一些功能。从 Windows 10 开始,UCRT (Universal C Runtime) 可作为 MSVCRT 的替代品,它是为了更好地支持最新的Windows版本并提供更好的标准一致性而设计的,除非你以旧版本的 Windows 为目标,否则作为运行时库的 UCRT 是更好的选择。

综上,一般选择posix接口,ucrt运行时进行下载。下载解压后,将bin路径添加到path中即可。

http://www.lryc.cn/news/471775.html

相关文章:

  • CSS3新增长度单位
  • 【Spring】创建Spring项目前的配置工作
  • docker 安装部署 nginx
  • 黑马数据库学习笔记
  • MYSQL-SQL-03-DQL(Data Query Language,数据查询语言)(单表查询)
  • 【数据结构和算法】三、动态规划原理讲解与实战演练
  • 交叉编译 perl-5.40.0(riscv64)
  • Leetcode 搜索旋转排序数组
  • Spring Task—定时任务
  • Spring Boot 应用开发概述
  • Chrome谷歌浏览器加载ActiveX控件之allWebDesktop控件介绍
  • GitHub Star 数量前 5 的开源应用程序生成器
  • DBC文件当中新建CANFD等类型的报文
  • 基于SpringBoot的房地产销售管理系统【附源码】
  • 圆点虚线 Android
  • 贵州鑫宏远农业-始终致力于推动现代农业的科技创新与发展
  • 程序员做销售,从代码到客户的逆袭之路
  • Flink CDC系列之:理解学习Kubernetes模式
  • git合并相关操作详解
  • 前端经典【面试题】持续更新HTML、CSS、JS、VUE、FLUTTER、性能优化等
  • 【Linux知识】linux磁盘管理深入了解
  • Qt Essential Classes
  • 小小猫棒onu替换家用光猫,薅运营商带宽羊毛,突破1000M
  • 软件测试学习笔记丨Selenium学习笔记:css定位
  • python数据处理常用操作
  • 解决minio跨域问题
  • python 跳过当前循环
  • 数据库数据恢复—Oracle ASM磁盘组掉线 ,ASM实例无法挂载的数据恢复案例
  • jupyter notebook改变默认启动路径
  • libevent源码剖析-基本数据结构