首页 > 系统相关 >CPP编译器安装(Windows环境)

CPP编译器安装(Windows环境)

时间:2024-03-19 13:22:51浏览次数:16  
标签:GCC Windows step C++ ++ 编译器 CPP gdb

编译器选择

一些常用的C++编译器:

  1. GNU Compiler Collection (GCC)
    • GCC支持多种编程语言,包括C++,是一个免费开源的编译器套件,我们常用的是以下两种。
      • GCC: C 语言编译器,也称为 gcc
      • **G++: **C++ 语言编译器,也称为 g++
    • 它是许多Linux发行版的默认编译器,也可在其他操作系统上使用。
    • GCC提供了丰富的优化选项和功能,适用于各种类型的C++项目。
  2. Clang
    • Clang是LLVM项目的一部分,也是一个免费开源的编译器。
    • 它支持C、C++和Objective-C等语言,并提供了更快的编译速度和更好的错误报告。
    • Clang的模块化架构使其易于扩展和集成到其他工具中。
  3. Microsoft Visual C++ Compiler
    • Microsoft Visual C++是Windows平台下的主要C++编译器。
    • 它通常与Visual Studio集成,提供了丰富的开发工具和调试功能。
    • Visual C++ Compiler也可以作为独立的编译器使用。

本文推荐使用GCC,当前区域赛用的应该都是GCC

使用MinGW或MSYS2安装GCC

  • MinGW(Minimalist GNU for Windows)和MSYS2(Minimal SYStem 2)是在Windows上使用GCC的常用工具。
  • MinGW提供了基本的开发工具,而MSYS2则提供了更丰富的Unix风格的环境和包管理器。
  • 推荐使用MSYS2,因为它提供了更好的包管理和更新机制。
  1. 下载和安装MSYS2

  2. 配置镜像源或代理

    • 配置msys2清华镜像

      • 打开你之前安装的路径找到msys2\etc\pacman.d可以看到mirrorlist.mingw32mirrorlist.mingw64mirrorlist.msys三个文件。

      • 在文件mirrorlist.mingw32中加入:

        Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

      • 在文件mirrorlist.mingw64中加入:

        Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

      • 在文件mirrorlist.msys中加入:

        Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

    • 如果在之后的安装过程中还是感到卡顿出现连接失败的情况则需要配置代理

      • ~\msys2\etc\profile.d路径下添加文件proxy.sh

      • 文件内容:

        export http_proxy=%PROXY_SERVER%:%PROXY_PORT%
        export https_proxy=%PROXY_SERVER%:%PROXY_PORT%
        

        注意里面要填的是自己的代理服务器和端口

  3. 更新包管理器

    • 打开MSYS2命令行窗口,执行以下命令更新包管理器:

      pacman -Syu
      
  4. 安装GCC

    • 在MSYS2命令行窗口中,执行以下命令安装GCC:

      pacman -S mingw-w64-x86_64-toolchain
      
    • 这会安装GCC以及其他必要的工具链。

  5. 添加环境变量

    将路径~\msys2\mingw64\bin(注意~为省略内容,准确来说是你安装的msys2中的mingw64里面的bin文件夹)添加至环境变量

    • 可以搜索path

    • 也可以右键此电脑,选择属性,找到高级系统设置

    • 打开后点击环境变量

    • 用户变量中选中Path,点击编辑,然后新建~\msys2\mingw64\bin路径添加即可,注意,如果添加了多个同名编译器的路径,他会默认选择最上面那个路径

  6. 验证安装

    • 安装完成后,可以在命令行窗口中运行以下命令验证GCC是否成功安装:

      g++ -v
      
    • 如果安装成功,将会显示G++的版本信息。

  7. 使用编译器

​ 我们以g++为例

​ g++ 是 GCC 编译器套件中用于编译 C++ 代码的命令,可以直接在命令行调用并将cpp文件编译成exe可执行文件,我们运行的就是编译产生的exe文件。通常,g++ 命令的一般形式如下:

g++ [选项] 文件名.cpp -o 输出文件名

​ 其中:

  • [选项] 是一些可选的编译选项,用于控制编译的行为,例如优化级别、警告级别等。常见的选项包括:

    • -c:只编译源文件而不进行链接,生成目标文件。

    • -g:在目标文件中包含调试信息,以便使用调试器进行调试。

    • -Wall:显示所有警告信息。

    • -O2:启用优化等级 2。

    • -std=c++20: 指定c++版本

    • 等等,具体选项可以使用 g++ --help 查看。

    • 文件名.cpp 是你要编译的 C++ 源代码文件名。

    • -o 输出文件名 指定编译生成的可执行文件的名称,不用写.exe这个拓展名。

​ 例如,要编译一个名为 hello.cpp 的 C++ 源代码文件并将生成的可执行文件命名为 hello,可以执行以下命令:

g++ hello.cpp -o hello

​ 如果要在编译过程中启用调试信息,可以添加 -g 选项:

g++ -g hello.cpp -o hello

​ 这样编译生成的可执行文件 hello 就包含了调试信息,可以使用调试器进行调试,可以配合gdb使用(感兴趣可以了解,产生调试信息都是用gdb产生的,gdb在是包含在刚才下载的工具链中的)。

配合使用 g++gdb 可以进行C++程序的编译和调试。下面是一个简单的步骤:

  1. 编译程序并包含调试信息

    使用 g++ 编译程序时,添加 -g 选项,以便在生成的可执行文件中包含调试信息。例如:

    g++ -g a.cpp -o a
    
  2. 启动调试器

    使用 gdb 启动调试器,并指定要调试的可执行文件:

    gdb ./my_program
    
  3. 设置断点

    gdb 命令行中,可以设置断点以便在程序执行到某一行时暂停执行并进入调试模式。例如,设置在 main 函数的第一行处的断点:

    (gdb) break main
    
  4. 运行程序

    gdb 命令行中,输入 run 命令来运行程序:

    (gdb) run
    
  5. 执行程序和调试

    一旦程序运行起来,可以使用 step, next, continue 等命令来控制程序的执行,以及查看变量的值、栈信息等。例如:

    • step:逐行执行程序,如果遇到函数调用,则进入函数内部执行。
    • next:逐行执行程序,如果遇到函数调用,则直接执行函数并返回到下一行。
    • continue:继续执行程序直到遇到下一个断点或程序结束。
    • print 变量名:打印变量的值。
    • backtrace:查看函数调用栈。
    • 等等。
  6. 退出调试器

    当调试完成后,可以使用 quit 命令退出 gdb 调试器:

    (gdb) quit
    

    一个大致的使用过程

    ❯ gdb ./a
    GNU gdb (GDB) 13.1
    Copyright (C) 2023 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-w64-mingw32".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <https://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./a...
    (gdb) break main
    Breakpoint 1 at 0x140001464: file 1009.cpp, line 54.
    (gdb) run
    Starting program: C:\Users\Fighoh\file\code\c\test\a.exe
    [New Thread 18096.0x4a14]
    [New Thread 18096.0x13d8]
    [New Thread 18096.0x3d78]
    
    Thread 1 hit Breakpoint 1, main () at 1009.cpp:54
    54          ios::sync_with_stdio(false); cin.tie(nullptr);
    (gdb) step
    55          int _ = 1;
    (gdb) step
    56          cin >> _;
    (gdb) step
    2
    57          while (_--)
    (gdb) print(_)
    $1 = 2
    (gdb) run
    The program being debugged has been started already.
    Start it from the beginning? (y or n) n
    Program not restarted.
    (gdb) step
    58              solve();
    (gdb) step
    solve () at 1009.cpp:50
    50      }
    (gdb) step
    main () at 1009.cpp:57
    57          while (_--)
    (gdb) print(_)
    $2 = 1
    (gdb) step
    58              solve();
    (gdb) step
    solve () at 1009.cpp:50
    50      }
    (gdb) step
    main () at 1009.cpp:57
    57          while (_--)
    (gdb) print(_)
    $3 = 0
    (gdb) step
    59          return 0;
    (gdb) step
    60      }
    (gdb) step
    __tmainCRTStartup () at C:/M/B/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:273
    273     C:/M/B/src/mingw-w64/mingw-w64-crt/crt/crtexe.c: No such file or directory.
    (gdb) quit
    A debugging session is active.
    
            Inferior 1 [process 18096] will be killed.
    
    Quit anyway? (y or n) y
    

标签:GCC,Windows,step,C++,++,编译器,CPP,gdb
From: https://www.cnblogs.com/Fighoh/p/18082554

相关文章

  • 基于GPU在本地部署llama.cpp
    基于GPU在本地部署ggerganov/llama.cpp:LLMinferenceinC/C++(github.com)下载[email protected]:ggerganov/llama.cpp.gitcdllama.cpp编译GPU环境的程序我是基于cuda12.4工具包,用cmake进行编译。编译得到的程序保存在./build/bin/mkdirbuildcdbui......
  • 第七章 Windows 10常见故障排查_实验案例一
    实验案例一:使用Windows安全模式解决系统故障1、实验环境    某公司的计算机全部安装了Windows10操作系统.公司员工由于操作不当,误安装了错误的驱动程序.导致计算机无法正常启动,现需要将错误的驱动程序卸载.2、需求描述通过安全模式进入操作系统。卸载掉存在兼容性......
  • Windows 10常见故障排查_实验案例(一)
    实验案例一:使用Windows安全模式解决系统故障1、实验环境    某公司的计算机全部安装了Windows10操作系统,公司员工由于操作不当,误安装了错误的驱动程。导致计算机无法正常启动,现需要将错误的驱动程序卸载。2、需求描述通过安全模式进入操作系统。卸载掉存在兼容性......
  • 第七章 Windows 10 常见故障排查_案例一
    实验案例一:使用Windows安全模式解决系统故障1、实验环境        某公司的计算机全部安装了Windows10操作系统,公司员工由于操作不当,误安装了错误的驱动程序,导致计算机无法正常启动,现需要将错误的驱动程序卸载,2、需求描述通过安全模式进入操作系统卸载掉存在兼容......
  • Windows环境安装Nginx
    1.下载点击跳转下载:Nginx下载选择Stableversion(稳定版) 2.将下载的压缩包,解压到日常使用的目录 3.修改conf/nginx.conf文件默认端口号,默认是80,将端口改为自己需要的端口 ......
  • windows排名前四的桌面美化软件 让你的电脑桌面秒变高级范儿
    一张精心挑选的壁纸不仅能反映个人品味和心境,还能在每次打开电脑时带来愉悦的心情,激发创造力和工作效率。下面给大家整理了几款好用的桌面美化软件,分分钟让你的电脑秒变高级!1、小智桌面(点击下载直接安装)小智桌面是集“文件整理、文件搜索、待办提醒、桌面壁纸”为一体的一站......
  • UEFI|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!
    前面讲了很多很多关于安装系统、重装系统的教程。但唯独没有讲到电脑换了新的硬盘之后,怎么把旧系统迁移到新的硬盘上。今天小白就来跟各位小伙伴详细唠唠:开始之前需要把系统迁移的条件准备好,意思就是在WinPE系统下,可以正常且同时访问新硬盘和旧系统盘。点击下方蓝字查看系......
  • Win10系统还原后,单击Windows搜索图标没反应
    前言我的笔记本是Win10,操作系统内部版本是:19045.4170。背景前几天电脑中毒了,在桌面生成了一个mouselock.exe的一个流氓软件,会自动把笔记本锁住。原因可能是因为把Windows自带的杀毒软件关闭了,也有可能是被那个流氓软件给关闭的。我开启Windows自带的杀毒软件,就检测出那个软件是......
  • windows解决端口占用问题
    1、查看当前端口占用情况netstat-anno|findstr:502 上图得知当前占用502端口的程序ID是228162、查看程序 3、关闭程序(cmd需要管理员打开)taskkill/PID22816/F  ......
  • MySQL忘记数据库密码,怎么连接数据库(Windows环境)
    一、Navicat连接过数据库,还有连接历史记录1.找回原密码(1)打开注册列表【win+R】-->【regedit】打开注册表 (2)查找Navicat密码保存位置,找到数据库名【数据库名称ruoyi】计算机\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers\ruoyi在右侧找到pwd属性,右键点击【修改......