对于so文件,了解其结构特点以及文件的产生过程是很重要的。
编译过程
首先我们要有一个hello.c
文件
#include<stdio.h>
int main(){
// 打印hello world!
printf("Hello World!");
return 0;
}
编译过程可以分为如下四步,可以借助gcc来实现这个过程。
-
预处理
- 处理源代码中的以“#”开头的指令。
- 删除所有的注释。
- 添加行号和文件名标识。
经过预处理之后得到的文件是
.i
后缀的文件。# gcc -E hello.c -o hello.i
-
编译
产生汇编代码文件。
得到的是.s
后缀的文件# gcc -S hello.i -o hello.s
-
汇编
将汇编代码转换成机器可以执行的指令。
得到的是.o
后缀的目标文件# gcc -c hello.s -o hello.o
-
链接
生成可执行文件# gcc hello.o -o hello
运行