如果要接触源码,就不可避免地要触及 编译(python这种不需要编译的 解释性语言 源码除外!!!)为了完成编译动作,我们有众多的编译工具,很多情况下,编译工具的调用被集成到了 IDE 当中。然而,如果上手一些开源项目,我们会发现,更常见到的是「奇奇怪怪」的 MakeFile 和 CMakeLists.txt。我们参照 ReadMe 的教程,装这个装那个,然后运行同样奇奇怪怪的 make、cmake 命令……折腾半天或许成功完成了编译……但脑子是否还是一片混沌?别说定制修改MakeFile和CMakeLists.txt,甚至连自己做了些什么都无法记忆起来……Why?
因为我们没理清Ta们为什么存在!
认识 make & cmake,我们先看看可执行文件是如何生成的
一、从 main.c 到 可执行文件 输出 Hello World
我们编辑一份最简单的 main.c 文件(认真上过1节C语言课的同学该都可以看懂),并期望经过编译将其变为可执行文件,然后运行输出Hello World。
#include
int main(int argc, char * argv[]) {
printf("\nHello World!\n");
return 0;
}
Step1:预处理 Preprocess
预处理即将源文件中的宏、头文件进行 ”展开“。
参考命令:
gcc -E main.c -o main_preprocess.c
预处理展开
Step2:汇编 Assembly
汇编可以将预处理后的代码转换为汇编语言,看看下面的汇编语言是不是特别「优美」捏!