第二章 编译和链接

2018-07-24  本文已影响0人  jinx1663

预处理(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)

  1. 地址和空间分配
  2. 符号决议
  3. 重定位

PLT工作原理

GOT表结构 PLT 动态重定位表 可重定位表结构
  ELF32_R_SYM(Elf32_Rel->r_info) = (Elf32_Rel->r_info) >> 8
  重定位项对应符号在符号表中的下标
  ELF32_R_TYPE(0x607) = 7,对应R_386_JUMP_SLOT
上一篇 下一篇

猜你喜欢

热点阅读