跳转至

编译与工具链

工具链把语言承诺翻译为可加载、可调试、可复现的机器产物。任何一段“编译成功”的程序,都隐含了前端语义、IR、目标 ISA、ABI、对象格式、链接器、动态加载器、标准库与构建环境之间的一整组协议。

阅读地图

一条最短实验链

面对一段 C/C++ 程序,可以按层取证:

clang++ -std=c++23 -E app.cc > app.ii
clang++ -std=c++23 -Xclang -ast-dump -fsyntax-only app.cc
clang++ -std=c++23 -S -emit-llvm app.cc -o app.ll
clang++ -std=c++23 -c app.cc -o app.o
llvm-objdump -dr --source app.o
clang++ app.o -Wl,-Map=app.map -o app
readelf -hSWlrsd app

每一步回答不同问题:预处理输入、语义树、优化 IR、可重定位对象、机器指令、链接决策与运行时依赖。不要让单一反汇编承担全部解释。

边界

这里关注通用编译、链接、构建与调试机制。具体语言对象模型回到语言与运行时;测量工具的实验设计与生产观测进入性能与可观测性

Reference