Windows系统下GCC配置, MinGW-W64 GCC安装与配置,Dev-C++、CodeBlocks

2024-01-20 22:10

本文主要是介绍Windows系统下GCC配置, MinGW-W64 GCC安装与配置,Dev-C++、CodeBlocks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Windows系统下,除微软的VS外,大多使用GCC作为编译,现在的GCC并不是只能在Linux系统上才能使用的编译器,早已移值到了Windows系统下了。

由于VS的庞大,很多人员只是学习一下C/C++语言,庞大的VS功能大多是用不到的,这时在Windows系统下GCC就是一个不错的选择。(需要学习Windows下应用程序开发的建议还是使用VS做为开发工具

现在的GCC其实是一个套件,可以编译C语言程序,也可以编译C++语言程序

编译C语言可以使用:gcc 命令

编译C++语言可以用:g++ 命令

Windows系统下的IDE集成GCC编译器有:Dev-C++(Dev CPP)、CodeBlocks等常见的IDE里。

Dev-C++(Dev CPP)、CodeBlocks 所使用的GCC
Dev-C++ v5.11gcc version 4.9.2 (tdm64-1)
CodeBlocks v17.12gcc version 5.1.0 (tdm-1)

GCC各发行版简介:

MinGW、MinGW-w64、TDM-GCC编译之间的区别
MinGW只有32位版---------------不推荐使用
MinGW-w64提供 32位和64位--------更新最快,基本上gcc更近后几周内就会跟进
TDM-GCC提供32位和64位---------更新速度也不怎么样

编译器或IDE下载地址:

MinGW:http://www.mingw.org

MinGW-w64:http://www.mingw-w64.org

TDM-GCC:http://tdm-gcc.tdragon.net

Dev-C++ v5.11:https://sourceforge.net/projects/orwelldevcpp

CodeBlocks v17.12:http://www.codeblocks.org


MinGW-W64 GCC安装与配置

MinGW-w64下载地址:https://sourceforge.net/projects/mingw-w64/files/

选择合适的版本

i686纯32位版供32位win系统使用
x86_64是64位系统用的版本

seh结尾是纯64位编译
sjlj结尾是32 64两种编译,需加-m32或-m64参数

posix通常用于跨平台,比win32兼容性好一些

 我这里选择的是:MinGW-W64 GCC-8.1.0 x86_64-posix-sjlj  (已经编译好的压缩包,并非在线安装程序)


配置过程:

  1. 下载压缩包
  2. 将压缩包解压到硬盘
  3. 配置编译环境

假设我这里将下载的压缩包解压到:D:\mingw64 目录下


配置环境变量(以Win7为例Win10类似):

 简便操作过程:

右击“计算机” --》属性 --》高级系统设置 --》环境环境 --》系统变量 --》“Path”变量 --》编辑,追加 ;D:\mingw64\bin

设置系统环境变量具体步骤

详细操作过程:

在桌面选择“计算机” --》右击选择“属性” --》进入“控制面板\所有控制面板项\系统”选项 --》选择左边的“高级系统设置” --》弹出的系统属性,选择“环境变量” --》在系统环境变量里,找到变量名为“Path” --》双击“Path”变量 --》在结尾追加“;D:\mingw64\bin”

Windows的“Path”环境变量是以分号为分隔符(“;”是英文的分号),不是中文的分号,切记!最后一个“Path”环境变量不需要分号!


验证环境是否安装

开始菜单 ---> 附件 ---> “命令行提示符”  或 “Win键+R”组合键,输入:cmd

在命令行下输入:gcc -v

如有输出GCC信息则配置成功,配置成功如图:

MinGW-W64 GCC 配置成功输出信息

 环境变量添加错误将会提示无效命令。

添加make命令

make命令是Linux上用的比较多的命令,方便面快捷的编译C/++程序。

进入D:\mingw64\bin目录,拷贝复制一份“mingw32-make.exe”在该目录,并重命名为“make.exe”

MinGW-W64默认把它命名为“mingw32-make.exe”文件名,也可以直接更改该文件名为“make.exe”,这里为了以后有其它的工具会调用到“mingw32-make.exe”,特复制一份并命名为“make.exe”文件而已。


Dev-C++、CodeBlocks环境变量添加

Dev-C++和CodeBlocks想要在控制台下使用,请添加如下环境变量到系统的“Path”变量当中

这里我的假设是将Dev-C++和CodeBlocks安装在D盘上,如不是安装在D盘下,请自行更改相应的目录

Dev-C++: D:\Dev-Cpp\MinGW64\bin

CodeBlocks: D:\CodeBlocks\MinGW\bin

make命令也是进入相应的 bin 目录复制“mingw32-make.exe”文件并重命名为“make.exe”文件


编译第一个C/C++源代码文件

源代码:

// tex.c
#include <stdio.h>int main(void)
{printf("Hello World\n");return 0;
}

编译运行:

编译C源代码文件,并运行编译好的程序

小技巧:

在命令行下经常需要切换目录,是一件比较麻烦的一件事。可以新建个“*.bat”文件,内容为"start",将该批处理文件放置到所建的工程目录下,要使用命令行时,直接双击打开就可以了,不用切换目录了。


GCC、make命令及Makefile简单介绍

CGG参数(更多参数请输入:gcc --help)

选项说明
-E只进行预编译,代码送往标准输出
-S

编译生成汇编代码

-c编译生成目标文件”.o”,不链接成可执行文件
-o out_filename保存为指定的文件名,不指定默认为a.*文件
-g在可执行程序中包含标准调试信息,要调试源文件须添加
-On这里的“n”指的是数字,选择程序要使用的优化级别,分别为-O1,-O2,-O3,一般使用-O2就可以了
-std=选择C准备,如:C99,C11等(例:-std=c11)
-Wall

打开所有类型语法警告,建议养成使用该选项的习惯(不包括-pedantic选项)

-pedantic

能够帮助程序员发现一些不符合ANSI/ISO C标准的代码(如未定义行为提示)

make命令

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

Makefile文件简介

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

 Makefile文件是没有文件名后缀的,就一个名为“Makefile”的文件

更多的Makefile文件资料请自行搜索查看

下边贴出我常用测试使用的Makefile文件,“#”开头为注释,请按提示修改相应选项

all : tex# 请根据自己的工程修改相应的选项内容,文件为*nix(unix,Linux)格式,可用Notepad++等打开
# Windows系统记事本打开不会换行# 要编译的常用参数选项
CFLAGS=	-Wall -pedantic -O2#要编译的文件名
obj = tex
#要编译文件后缀
suffix = .c
#要使用的编译器(gcc或g++)
cc = gcc
#编译标准(C:-std=c11,C++:-std=c++14)
Std = -std=c11
#要编译成32或64位程序
Bit = -m32
#编译文件需要连接的其它库文件CFLAGS+= $(Std)
CFLAGS+= $(Bit)tex : $(obj)$(suffix)$(cc) $(obj)$(suffix) $(CFLAGS) $(LINK) -o $(obj)@./$(obj)@echo Error : %ERRORLEVEL%.PHONY : clean
clean:-del $(obj).exe

将上边内容保存为一个“Makefile”,记得第一个字母为大写,其它都是小写(Windows会稍微宽一些,全小写也可以),并把“Makefile”文件放在要编译的C/C++源文件目录下,打开命令行执行:make

# 执行编译
D:\测试时间>make
gcc tex.c -Wall -pedantic -static -O2 -std=c11 -m32  -o tex
Hello World
Error : 0# 执行清除
D:\测试时间>make clean
del tex.exeD:\测试时间>

 简单的一个C编译工程:Hello World目录

简单的一个学习测试目录文件​​​​​

 编译并执行、清除文件:

make命令截图

本文中用的测试文件:https://gitee.com/duke56/test_time

本文没有啥技术含量,纯粹是给C/C++新学员参考配置学习环境用的!

这篇关于Windows系统下GCC配置, MinGW-W64 GCC安装与配置,Dev-C++、CodeBlocks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627505

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.