• Windows 配置 C/C++ 编译环境指南


    什么是GCC

    gcc是c/c++的编译器,通常只能在 Linux 上才能用。如果我们要在windows上使用它,那么我们需要用MinGW来构建环境。让我们在Windows上也可以用gcc编译c代码,gcc与操作系统的api交互的地方mingw都与Windows API做了兼容处理。通过mingw的gcc编译出来的c/c++程序是可以原生在Windows上执行的。

    下面是两种GCC环境的安装方式,一般只需要挑选其中一种安装即可,能用命令的地方我都会用命令处理,这样也能学到更多的知识点,文中系统环境版本为 Windows11

    MinGW

    MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行库。你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。

    Mingw-w64 是对原始 mingw.org 项目的改进,旨在支持 Windows 系统上的 GCC 编译器。为了提供对 64 位和新 API 的支持,它在 2007 年对其进行了分叉。从那时起,它得到了广泛的使用和分发。

    • 官方网址:
    https://www.mingw-w64.org/
    
    • 1

    下载页面上提供了 MingW-W64MSYS32 下载链接

    在这里插入图片描述

    下载 mingw-w64 安装包

    mingw-w64 源的压缩包托管在 SourceForge

    SourceForge下载地址

    https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
    
    • 1

    列表下拉,找到 x86_64_win32-sjljx86_64_win32-seh 点击下载

    SJLJ (setjmp / longjmp): 可用于32位和64位 – 不是“零成本”:即使不抛出exception,也会造成较小的性能损失(在exception大的代码中约为15%) – 允许exception遍历例如窗口callback
    SEH (零开销exception) 将可用于64位GCC 4.8。

    在这里插入图片描述

    如果碰到无法下载请尝点击 Problems Downloading?尝试其他地区的镜像源

    在这里插入图片描述

    安装 mingw-w64

    下载完成后我们解压 x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z 文件,提取到当前位置,我们将提取后得到的 mingw64 目录移动到D盘下

    在这里插入图片描述

    配置环境变量

    D:\mingw64\bin 目录中的文件就是我们需要的,因此我们需要把该目录添加到环境变量中去
    在这里插入图片描述

    • 添加环境变量

    以管理员权限打开CMD后输入下列命令,追加一条系统环境变量

    setx path "%PATH%;D:\mingw64\bin" /M
    
    • 1
    • 检查gcc版本

    在cmd窗口中输入gcc-v 查看版本信息,如下图所示则添加环境变量成功。
    在这里插入图片描述

    MSYS2

    MSYS2是一个工具库,提供易于使用的环境,用于构建、安装和运行本机 Windows 软件。

    它包括一个名为 mintty的命令行终端、bash、git 和 subversion 等版本控制系统、tar 和 awk 等工具,甚至 autotools 等构建系统,尽管其中一些核心部分基于 Cygwin,但 MSYS2 的主要重点是为本地 Windows 软件提供构建环境。MSYS2 为 GCC、mingw-w64、CPython、CMake、Meson、OpenSSL、FFmpeg、Rust、Ruby 等提供最新的原生构建环境。

    为了提供简单的软件包安装和保持更新的方法,它提供了一个名为 Pacman的软件包管理系统,使用过Arch Linux 用户应该会非常熟悉。它的功能非常强大,例如对依赖关系的解析和完整系统升级,以及直接和可重复的包构建。它的资源库中包含2600 多个可以安装的预构建包。

    • 官方网址:
    https://www.msys2.org/
    
    • 1

    下载 MSYS2 安装包

    在官方网站中获取到下载链接后我们可以通过 powershell来进行下载安装,

    • 下载命令:
    wget -O msys2-x86_64.exe  https://github.com/msys2/msys2-installer/releases/download/2022-06-03/msys2-x86_64-20220603.exe
    
    • 1

    安装 MSYS2

    cmd /c msys2-x86_64.exe
    
    • 1

    默认安装路径为 C:\msys64

    在这里插入图片描述

    启动 MSYS2

    安装完成后,通过开始栏菜单启动 MSYS2 的控制台 MSYS2 MSYS

    在这里插入图片描述

    更新包库

    在打开的控制台中输入以下命令更新包库

    pacman -Syu
    
    • 1

    出现 以下选项时输入 Y 并按回车继

    Proceed with installation? [Y/n]
    
    • 1

    在这里插入图片描述
    出现下列提示 ,键入Y并回车后窗口关闭

     To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n] 
    
    • 1

    重新打开 MSYS2 MSYS 控制台并输入下列命令,进行基础包更新

    pacman -Su
    
    • 1

    在这里插入图片描述

    出现下列提示, 键入Y并回车。

    Proceed with installation? [Y/n]
    
    • 1

    在这里插入图片描述

    安装MinGW-w64

    等待所有的包更新完毕后接着就可以安装 MinGW-w64 构建包了

    pacman -S --needed base-devel mingw-w64-x86_64-toolchain
    
    • 1

    出现如下页面会让你选择安装哪些包,由于需要安装的包比较多 我这边就直接回车默认全部安装。
    在这里插入图片描述

    设置环境变量

    • 添加环境变量

    以管理员权限打开CMD后输入下列命令,追加一条系统环境变量

    setx path "%PATH%;C:\msys64\mingw64\bin" /M
    
    • 1
    • 检查gcc版本

    在cmd窗口中输入gcc-v 查看版本信息,如下图所示则添加环境变量成功。
    在这里插入图片描述

    功能验证

    创建C语言文件

    我们在当前工作目录写创建一个新的 hello.c

    notepad hello.c
    
    • 1

    hello.c 编写内容如下:

    # include 
    
    int main()
    {
        printf("%s\n","hello world");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    编译文件

    输入命令编译成exe可执行文件

    gcc hello.c -o hello.exe
    
    • 1

    在当前目录下会生成 hello.exe 的可执行文件,生成后输入 hello.exe 就可以执行了。

    在这里插入图片描述

    调试程序

    如果想调试程序,进入 gdb 的功能,使用 gdb 常用的命令就可以调试程序了,我们可以输入

    gdb hello.exe
    
    • 1

    在这里插入图片描述

    关于环境变量的检查变更

    由于是系统环境变量,还是需要以管理员权限执行下列命令

    rundll32.exe sysdm.cpl,EditEnvironmentVariables
    
    • 1

    双击Path 项,查看之前新增加的环境变量项是否存在,如果需要修改调整,可以在原来的设置上做修改,也可以删除后再增加,有重复的可以删除。
    在这里插入图片描述

  • 相关阅读:
    红黑树(4万字文章超详细,只为一个目的)
    小节9:Python之numpy
    Real-Time Rendering——Chapter 8 Light and Color光和颜色
    云计算到底牛x在哪里?
    msvcr120.dll缺失怎么修复,快速修复msvcr120.dll丢失的三个有效方法
    手写RISC-V处理器--开篇
    16 Linux之JavaEE定制篇-搭建JavaEE环境
    机器人中的数值优化(十六)—— 约束优化的应用:控制分配问题、碰撞距离计算、非线性MPC
    自然语言处理(NLP)是什么?
    java计算机毕业设计高校运动会源码+mysql数据库+系统+lw文档+部署
  • 原文地址:https://blog.csdn.net/no1xium/article/details/126684753