00.第一个C语言程序

创建 hello.c,输入一下代码:

1
2
3
4
5
6
#include<stdio.h>

int main() {
printf("Hello C\n");
return 0;
}

完成代码编写后,保存并在下面的终端输入编译命令:

1
gcc -o abc abc.c

GCC 是由 GNU 开发的编程语言编译器,用来编译 C 语言程序。
gcc -o abc abc.c 命令调用编译器 GCC 对文件 abc.c 进行编译,完成了 “预处理-编译-汇编-链接”,生成了可执行文件 abc。

编译
编译器可以将源代码转换成机器语言,在编译过程中,会找出错误并报告。这个阶段的输入是在编辑期间产生的文件,常称为源文件。
gcc -c 1-1.c

链接
链接器将源代码文件中由编译器产生的各种对象模块组合起来,再从 C 语言提供的程序库中添加必要的代码模块,将它们组合成一个可执行文件。
gcc -o 1-1 1-1.o

多数情况下,我们是通过 gcc -o 1-1 1-1.c 一次性完成编译和链接。

安装 gcc 环境

Mingw-w64

Downloads - MinGW-w64
https://www.mingw-w64.org/downloads/#mingw-builds

MSYS2

https://www.msys2.org/

msys2 包地址
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/

以自解压版为例
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/msys2-base-x86_64-20230718.sfx.exe

mirror 镜像

1
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

1. 下载自解压程序
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/msys2-base-x86_64-20230718.sfx.exe

2. 双击 ucrt64.exe 进入终端并执行

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

参考

tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "D:\\msys2\\msys64\\mingw64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}

优化版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "g++.exe", // 从 gcc 切成 g++
"args": [
"-fdiagnostics-color=always",
"-g",
"*.c", // 当前所有 .c 的文件都编译
"-o",
"${fileDirname}\\out.exe" // 统一叫 out.exe
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}