CSAPP 第七章 链接

7-1 编译器驱动程序

链接是将各种代码和数据收集并组合成一个文件的过程。

gcc -Og -o prog main.c sum.c

-Og 代码优化等级
-o prog 指定可执行文件的名字为prog

image

预处理

cpp -o main.i main.c 将源程序main.c翻译为main.i

  • cpp是c preprocessor
  • 可用 gcc -E -o main.i main.c 替代指令 -E 限制gcc只进行预处理

编译

cc -S -o main.s main.i

  • cc是c compiler
  • 可用 gcc -S -o main.s main.i 替代指令 -S 限制gcc只编译

汇编

as -o main.o main.s

  • as是assembler

链接

ld -static -o prog main.o sum.o

  • ld是链接器

运行

./prog

7-2 可重定位目标文件

gcc -c main.c

  • -c编译选项表示值进行编译和汇编不执行链接操作。

wc -c main.o

  • -c选项表示查看文件包含多少个字节

ELF:Executable and Linkable Format,可执行可链接格式。

反汇编 objdump -s -d main.o

  • .text 存已经编译好了的机器代码
  • .data 存初始化了且初始化不为0的全局变量。
  • .bss 存未初始化或初始化为0的全局变量(不占用实际的空间)
  • .roadata
    image

7-3 符号和符号表

接7-2另外的几个section

image

  • Symbol Table.symtab
posted @   _daybreak  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示