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

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.kler.cn/a/370885.html

相关文章:

  • Mongodb相关内容
  • vue3+elementPlus之后台管理系统(从0到1)(day1)
  • excel仅复制可见单元格,仅复制筛选后内容
  • 大疆最新款无人机发布,可照亮百米之外目标
  • 【Unity】unity3D 调用LoadSceneAsync 场景切换后比较暗 部门材质丢失
  • 【Linux】进程间通信IPC
  • Ubuntu22.04版本左右,扩充用户可使用内存
  • 安卓取消触摸屏幕的指针效果
  • 为什么廉价的谷歌SEO服务往往是陷阱?
  • 鸿蒙next之axios二次封装并携带cookie
  • Docker加载并运行别人的容器的同时挂在本地其他文件
  • 影刀RPA与Python作为爬虫的对比
  • 线程的同步
  • MFC实现以不规则PNG图片作为窗口背景
  • IMX6ULL之使用汇编操作GPIO
  • mac 上使用 cmake 构建包含 OpenMP 的项目
  • 网络请求自定义header导致跨域问题
  • 「二叉树进阶题解:构建、遍历与结构转化全解析」
  • 【网络安全】红队人员的GPO和OU指南
  • 端口号和ip地址一样吗?区别是什么
  • [Linux] linux 软硬链接与动静态库
  • 芯片上音频相关的验证
  • 2024前端JS面试题总汇
  • 基于yolov8的布匹缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • 《Linux系统编程篇》fork函数——基础篇