知行LEARNING HANDBOOK
目录 · 04 一段程序如何运行
学习手册/系统与程序
CHAPTER 049 分钟

一段程序如何运行

沿着源代码、编译、链接、加载到进程执行,建立完整路径。

读完这一章,你会理解

  1. 区分编译与链接
  2. 理解可执行文件与进程的差别
  3. 知道系统从哪里开始执行程序

源代码先变成机器可执行的结构

编译器把源代码转换为目标代码,链接器再把目标文件和依赖组合成可执行文件。这个过程不仅生成机器指令,还会组织符号、重定位信息和不同用途的数据区域。

source.c → object.o → executable
          compile    link

可执行文件不是正在运行的程序

文件静静地存放在磁盘上。真正启动时,操作系统加载器根据文件中的结构建立虚拟地址空间,映射代码和数据,准备栈与动态库,然后创建进程。

入口点只是开始,不是全部

可执行文件会记录入口信息,但应用通常不会直接从我们写的 main 第一行开始。运行时初始化、动态链接和语言环境准备可能先发生,之后才调用用户代码。