深入理解计算机系统(读书笔记)

本文介绍了ELF文件的基本组成部分,包括.text、.rodata、.data和.bss等段,探讨了符号表中weak与strong的区别及链接过程中的处理方式,并解释了静态链接过程中如何重定向不同.o文件的数据段和符号段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

link

  • 对于一个最终链接而成的elf文件,它里面所包含的东西,就是.text段,.rodata段,.data段,.bss段,.symtab等这些数据内容


  • 对于符号表,有weak和strong之分,没有初始化的符号定义为weak,已经初始化的为strong,如果link发现两个relocatable object含有相同的符号定义时,有三种情况:
1. 两个模块都是strong,则链接报错;
2. 一个strong,一个weak,则使用strong;
3. 两个weak,使用任意一个,但这种情况可能会导致比较隐藏的错误;

静态链接

  • 链接静态库时,只会把引用到的符号加入到最终的可执行文件中;不相关的符号不会被加入;
  • 重定向:把不同的.o文件中的data端,符号段等合并成一个,形成最终的可执行文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值