编译工具安装

为了在 Windows 上安装 GCC,您需要安装 MinGW-w64。

MinGW-w64 是一个开源项目,它为 Windows 系统提供了一个完整的 GCC 工具链,支持编译生成 32 位和 64 位的 Windows 应用程序。

1. 下载MinGW-w64源代码,如图点击进去可以下载源代码,但是由于网页更新后,该路径没有编译好的安装包。

访问 MinGW-w64 的主页 mingw-w64.org,进入 MinGW 下载页面 Downloads - MinGW-w64,下载最新版本的 MinGW-w64 安装程序。

2.下载mingw-builds-install.exe安装,改方法可能没法下载

 https://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/

3.下载绿色版本的MinGW-w64,解压并把路径加入环境变量即可使用,下载链接如下:

https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/

所以演示绿色版的安装过程,绿色版只是需要添加环境变量,将绿色版解压到D盘根目录,如下下载后解压即可直接使用;

把存放的路径比如当前存放置:D:\mingw64\bin 加入环境变量

win+R,输入 cmd,进入windows命令行模式。输入 gcc -v 或者gcc --version,可以查看gcc安装情况

vscode安装

isual Studio Code虽然它是一个通用的文本编辑器,但它有很多插件支持 C/C++ 开发,使其成为一个流行的选择,通过安装 C/C++ 插件和调整设置,你可以使其成为一个很好的 C 语言开发环境。

1. 安装包下载地址

VScode 官网地址:https://code.visualstudio.com/

VScode 官方文档地址:https://code.visualstudio.com/docs

下载想要的格式包链接:

Download Visual Studio Code - Mac, Linux, Windows

2. 安装教程

VSCode 安装很简单,点击 Next,傻瓜式安装;

注意安装路径设置、环境变量默认自动添加到系统中,勾选以下所有选项:

vscode插件安装

比如安装汉化包,VScode 安装汉化包很简单,打开 VScode,点击安装扩展,在搜索框输入 Chinese,然后点 Install 就可以。

 

【设置】-打开命令面板

输入Chinese会自动联想出来Configure Display Language

点击Configure Display Language 选择中文简体

弹出重启框点击restart

vscode编译C程序

1.配置C/C++环境,安装C/C++插件(安装Microsoft自家的)。点击插件,搜索“C”,点击“install”:

 下载以后,重启VSCode,如果提示你需要安装一些其他C/C++扩展,选择是就可以 

2.新建一个main.c文件,并输入c代码

3. vscode界面,文件->文件夹,选择打开上面的D:\c_code文件夹,会默认生成.vscode文件夹。

3.运行代码

【1】点击如图控件

【2】选择第一个,就会在终端就输出编译 结果,同时生成了一个task.json的文件

或者,点击"Terminal"->Run Build Task,在配置的目录生成可执行文件"main.exe",在终端命令行模式运行可执行文件。

或者,界面右键,点击“Run Code”,即可运行该C代码(单个文件可以这样运行程序)

配置文件和编译调试选项

想要在 VS Code 中运行和调试 C/C++ 程序,涉及三个配置文件:tasks.json、launch.json 和 c_cpp_properties.json。这三个配置文件一起提供了一个完整的 C/C++ 开发环境的配置。

  •    tasks.json 文件用于配置任务(例如编译)
  •    launch.json 文件用于配置调试器
  •  c_cpp_properties.json 文件用于配置 IntelliSense 功能

tasks.json 文件

tasks.json可以修改为如下,对应注释部分

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:/mingw64/bin/gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                //"*.c",//可以屏蔽上句,这一句代表编译当前目录下所有后缀都是.c的文件
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                //上面那句改为 "${fileDirname}\\allfile.exe",生成的可执行文件全部叫做allfile.exe,如果想改回来,把这一句注释掉,然后把上一句取消注释就行了
                ""
            ],
            "options": {
                "cwd": "D:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

如果打程序所在开文件夹默认没有生成.vscode,则tasks. json文件生成步骤如下:

1.选择.c文件,选择终端配置。

 2. 选择如图部分

或者点击小齿轮,选择如下部分,即可生成tasks.json.

3. 生成了如下配置文件

 4.把配置文件修改为自己的样式,用于生成可执行文件

5.运行代码,生成可执行文件

6. 生成任务成功后,打开PowerShell,运行生成的文件(如果运行不成功,可能是由于gcc环境变量是新配置的,重启一下vscode即可生成成功)!

7. 如果需要在终端输入所以需要使能code runner的Run In Terminal功能。

launch.json文件

1.点击如图图标,点击创建launch.json文件

点击右下角:

 2. 修改launch.json的配置,如修改如下注释部分,注意是修改编译生成的可执行文件路径和名称;以及gdb.exe调试器的路径。

{
  "version": "0.2.0",
  "configurations": [
    
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": true,
      "cwd": "d:/c_code",
     // "program": "d:/c_code/build/Debug/outDebug",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
        //上面一句是tasks.json中设置好的可执行程序,如果没有按照我上一步来设置tasks.json,不要动这里
      "MIMode": "gdb",
     // "miDebuggerPath": "gdb",
      "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
            //上一句是指你的gdb路径,把之前让你加入环境变量的路径复制过来,然后加上gdb.exe,然后把单斜杠\换成双斜杠\\!!!!!
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

 3.点击 “Run” ->“Start Debugging”,或者点击左侧 “Run and Debug” 按钮打开运行和调试窗口,点击窗口上方 Launch 旁边的绿色小三角按钮开始调试(也可以直接按 F5 键进入调试模式)。开始调试代码。按调试按键,单步执行,即可查看调试信息,变量值变化等!

注意一定要先设置断点!

c_cpp_properties.json 文件

c_cpp_properties.json 文件不是必须的,主要用于配置 C/C++ 扩展的 IntelliSense 设置,指定编译器路径、标准库路径、头文件路径、宏定义等信息。它影响的是编辑器对代码的智能提示、语法检查等功能,而不是编译任务。

创建 c_cpp_properties.json 文件的方法是:通过快捷键 Ctrl + Shift + P 打开执行命令的输入框,输入 “C/C++”,选择 “C/C++: 编辑配置(JSON)”。

如果上面没有出现编辑配置(UI),则可以选择其他版本重新安装。

选择编辑配置后多了.vscode

 

进行相关项配置:

生成如下配置:

多文件编译

如有如下的c程序文件:

add.c:

#include <stdio.h>
 
 int add_function(int a,int b)
 {
    int sum = a+b;
    printf("add_function,a + b,a = %d,b =%d\n",a,b);
    return sum;
}

add.h:

#ifndef __ADD__H
#define __ADD__H

 int add_function(int a,int b);

#endif

div.c:

#include <stdio.h>
 
 int div_function(int a,int b)
 {
    int div = a/b;
    printf("div_function,a / b,a = %d,b =%d\n",a,b);

    return div;
}

div.h:

#ifndef __DIV__H
#define __DIV__H

 int div_function(int a,int b);

#endif

main.c:

#include <stdio.h>
#include "add.h"
#include "div.h"

int main()
{
    printf("Hello, World! \n");
    
    int sum = add_function(1,2);
    printf("sum 1 + 2 = %d\n",sum);

    int div = div_function(10,2);
    printf("div 10/2  = %d\n",div);

    return 0;
}

多文件放置同一目录

主程序包含相应头文件,调用其他函数即可即可。点击右上角的三角形,点击"Run C/C++ file”,即可运行程序。

对应的tasks.json的配置如下:

${workspaceFolder} - 在VS Code中打开的文件夹的路径
${workspaceFolderBasename} - VS Code中打开的文件夹名称,不带任何斜杠(/)
${file} - 当前打开的文件
${relativeFile} - 当前打开的相对于workspaceFolder的文件
${relativeFileDirname} - 当前打开文件的目录名(相对于workspaceFolder)
${fileBasename} - 当前打开的文件的基本名称
${fileBasenameNoExtension} - 当前打开的文件基本名称,不带文件扩展名
${fileDirname} - 当前打开的文件的目录名
${fileExtname} - 当前打开文件的扩展名
${cwd} - 启动时任务运行程序的当前工作目录
${lineNumber} - 活动文件中当前选择的行号
${selectedText} - 活动文件中当前选定的文本
${execPath} - VS Code可执行文件的路径
${defaultBuildTask} - 默认构建任务的名称 

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:/mingw64/bin/gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g","${workspaceFolder}\\*.c",//这一句代表编译当前目录下所有后缀都是.c的文件
                "-I", "${workspaceFolder}",

                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                //上面那句改为 "${fileDirname}\\allfile.exe",生成的可执行文件全部叫做allfile.exe,如果想改回来,把这一句注释掉,然后把上一句取消注释就行了
 
            ],
            "options": {
                "cwd": "D:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

另外的运行方法:点击"Terminal"->Run Build Task,在配置的目录生成可执行文件,在终端命令行模式运行可执行文件。

 多文件在不同目录

1. 修改tasks.json文件:

.vscode文件夹中会出现tasks.json文件,打开该文件,在args中添加如下内容:

"-g", "${workspaceFolder}\\*.c",
"-g", "${workspaceFolder}\\div\\*.c",
"-I", "${workspaceFolder}",
"-I", "${workspaceFolder}\\div",

注释掉如下内容:

 //"${file}",

上述内容的解读如下:

  • "-g"用于添加源文件路径,类似于在IDE中添加Source Folder;

  • "-I"用于添加源文件的头文件,类似于IDE中设置Include Path。

2. 执行程序编译运行,点击右上角的三角形,点击"Run C/C++ file”,即可运行程序。

另外的运行方法:点击"Terminal"->Run Build Task,在配置的目录生成可执行文件,在终端命令行模式运行可执行文件。

使用makefile编译

make 环境搭建

1. make 安装

如图,把minw64的安装目录下的mingw32-make.exe复制一份,命名为make.exe,即可在命令行使用make。

2.make -v 查看是否make生效

 Makefile编写和执行make编译

工程目录下新建Makefile文件;把前面新建的.c文件通过make命令编译;

第1种:Makefile简单编写如下:

calc:add.o div.o 
	gcc add.o div.o main.c -o calc

add.o:add.c
	gcc -c add.c -o add.o

div.o:div.c
	gcc -c div.c -o div.o

执行编译: 

第2种Makefile实现: 

由于windows不能使用rm 等linux命令,故需要借助rm.exe等工具实现!解压win_make_tools,并把该路径 D:\win_make_tools 加入环境变量!加入后需要重启vscode,否则一种没法实现rm -rf命令!工具包下载链接:

https://download.csdn.net/download/weixin_42107504/91597692?spm=1001.2101.3001.9500

Makefile文件修改为如下格式: 

# 指令编译器和选项  
CC :=gcc
RM := rm -rf

# 宏定义  
DEFS = -DTEST_A -DTEST_B=1  
CFLAGS += $(DEFS)  

SRC_C := $(wildcard *.c)

OBJ_C := $(patsubst %.c,%.o,$(SRC_C))

OBJS +=$(OBJ_C)

calc:$(OBJS)
	$(CC) $(CFLAGS) $^ -o $@  $(INC)

clean:
	@echo do clean ...
	$(RM) *.o calc.exe

 执行编译:

第3种Makefile实现: 

Makefile文件修改为如下格式,对应的文件放在add,div目录,增加头文件路径包含,手动加载需要编译的.c文件(也可以使用脚本函数改为自动)。 

CC :=gcc
RM = rm -rf

DEBUG = -g -O1
CFLAGS = -Wall -c
TARGET :=calc

#当前路径转换为绝对路径
export ROOT = $(abspath .)

#手动加入要包含的.h头文件
export INCLUDES += \
-I$(ROOT) \
-I$(ROOT)/add \
-I$(ROOT)/div \

#手动加入要包含的.c文件
OBJS+= \
main.o \
./add/add.o \
./div/div.o \


$(TARGET):$(OBJS)
	$(CC) $^ -o $@

%.o:%.c
	$(CC) $(INCLUDES) $(CFLAGS)  $< -o $@

.PHONY: clean rebuild all
rebuild: clean all
all : $(TARGET)

clean:
	echo root $(ROOT)
	$(RM) $(TARGET) $(DEL_OBJECTS)

make编译,执行可以执行文件 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐