第二章 编译和链接

预处理(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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容