Linux环境编程(0)-从应用到内核
编译的过程:
预处理:替换宏
编译:将源代码编译成汇编
汇编:将汇编代码编译成二进制
链接:地址,so
编译成的ELF文件内容:
header信息 magic数
代码段 数据段 bss零值数据段
运行时:strace可以追踪程序的系统调用
加载ld.so
加载glibc.so
mmap将二进制映射到内存
执行main函数
glibc封装了系统调用,实现上基本是宏定义的汇编代码。因此用户并不需要关心自己写的代码是用户态还是内核态。系统调用的名字和参数通过寄存器传递。