CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
C 语言入门/课时/编译与构建
RawBlame
课时目录12 节

C 语言入门

  1. 01C 是什么
  2. 02类型与变量
  3. 03控制流与运算符
  4. 04函数
  5. 05指针与内存
  6. 06数组与字符串
  7. 07结构体与联合体
  8. 08预处理器
  9. 09编译与构建
  10. 10并发与进程
  11. 11调试与测试
  12. 12综合练习

编译与构建

gcc/clang、Make、CMake。

35 分钟

编译与构建

C 项目常由多个 .c 文件组成,需要编译器与构建系统协调。对照 /roadmaps/c,本课介绍 gcc/clang、Make 与 CMake 的基本用法。

学习目标

  • 理解编译、汇编、链接四阶段
  • 用 gcc/clang 编译单文件与多文件项目
  • 编写最小 Makefile
  • 了解 CMake 在 C 项目中的角色

核心概念

编译流程与命令

源码 .c  →  预处理  →  编译  →  汇编  →  目标文件 .o  →  链接  →  可执行文件
# 单文件
gcc -std=c11 -Wall -Wextra -O2 main.c -o app

# 分步:生成目标文件再链接
gcc -std=c11 -Wall -c math.c -o math.o
gcc -std=c11 -Wall -c main.c -o main.o
gcc math.o main.o -o app

# 调试构建
gcc -std=c11 -g -O0 main.c -o app_debug

最小 Makefile

CC      = gcc
CFLAGS  = -std=c11 -Wall -Wextra -O2
TARGET  = lesson_app
SRCS    = main.c math.c
OBJS    = $(SRCS:.c=.o)

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

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

clean:
	rm -f $(OBJS) $(TARGET)

.PHONY: clean

CMake 预览

cmake_minimum_required(VERSION 3.16)
project(LessonApp C)

set(CMAKE_C_STANDARD 11)
add_executable(lesson_app main.c math.c)
target_compile_options(lesson_app PRIVATE -Wall -Wextra)
cmake -S . -B build
cmake --build build

Java 一次 javac 得到字节码;C 需链接系统库(如 -lm 数学库)。

与 C++/Java 对照

角色CC++Java
编译器gcc、clang同左 + MSVCjavac
构建描述Makefile / CMakeCMake 为主Maven / Gradle
输出原生二进制原生二进制.class / .jar
依赖管理系统包 / 手动vcpkg / ConanMaven Central
链接静态 / 动态库同左运行时 classpath

C 与 C++ 共享 CMake 生态;大型 C 项目(Linux 内核除外)也常用 CMake 或 Make。

练习

  • 将两个 .c 文件编译为一个可执行文件
  • 写 Makefile,支持 、
make
make clean
  • 用 -Wall -Wextra 编译,修复所有警告
  • 用 CMake 构建同一项目,对比命令差异
  • 小结

    编译 + 链接 = 可执行文件;Make/CMake 管理多文件构建。 下一课学习并发与进程。

    加载本节练习…
    ← 上一课预处理器下一课 →并发与进程