预处理(prepressing)
gcc -E hello.c -o hello.i
cpp hello.c > hello.i
编译(compilation)
gcc -S hello.i -o hello.s
汇编(Assembly)
as hello.s -o hello.o
gcc -c hello.s -o hello.o
链接(Linking)
静态链接: 模块的拼接过程
ld -static crt1.o
汇编器代替人工计算目标地址(Symbol)
- 地址和空间分配
- 符号决议
- 重定位
PLT工作原理
GOT表结构 PLT 动态重定位表 可重定位表结构 ELF32_R_SYM(Elf32_Rel->r_info) = (Elf32_Rel->r_info) >> 8
重定位项对应符号在符号表中的下标
ELF32_R_TYPE(0x607) = 7,对应R_386_JUMP_SLOT
网友评论