The C Standard Library

世界上 “最通用” 的高级语言库函数

  • C 是一种 “高级汇编语言”
    • AskGPT: 为什么称C语言是高级的汇编语言?
    • 作为对比,C++ 更好用,但也更难移植
  • 屏蔽了底层体系结构细节
    • 管理数据、请求操作系统……

被很好地标准化

  • ISO IEC 标准的一部分
  • POSIX C Library 的子集
    • 稳定、可靠 (不用担心升级版本会破坏实现)
    • 极佳的移植性:包括你自己的操作系统!

我们应该怎么学习?

直接调试 glibc (像我们上课那样)

  • 不,你不想
  • glibc 的代码有非常沉重的历史包袱
    • 以及非常多的优化
    • 新手阅读体验极差

原则:总有办法的

  • 让 AI Copilot 帮你解释代码 (这个真的可以有)
  • 寻找更好的替代品
    • C 是 “高级汇编”,一定有为嵌入式设备实现的简化 libc
    • uclibc, newlib, bionic, ...
    • 今天的选择:musl

使用另一个 libc

下载源码不难,难的是怎么用下载的 libc 编译

  • AskGPT: How to compile a C program use musl as libc instead of glibc?
  • 当然,我们还是选择自己编译
    • 比较重要的选项
      • -O1: 减少优化级别,便于查看状态
      • -g3: 增加调试信息
    • musl-gcc 静态编译
  • 试一试:从第一条指令开始调试一个 C 程序