【读书笔记】程序员的自我修养总结(五)

275 篇文章 41 订阅 ¥39.90 ¥99.00
53 篇文章 40 订阅 ¥39.90 ¥99.00
51 篇文章 2 订阅
本文是《程序员的自我修养》读书笔记的第五部分,主要讨论了COMMON块、静态链接库、最小程序的构建以及链接脚本的工作原理。介绍了链接器如何处理弱符号,以及静态链接库的创建和使用。此外,还展示了构建最小程序的示例,探讨了链接脚本在内存编排中的作用。
摘要由CSDN通过智能技术生成

【读书笔记】程序员的自我修养总结(五)


声明:引用请注明出处http://blog.csdn.net/lg1259156776/


说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容。


COMMON块

前面提到过强弱符号机制允许同一个符号的定义存在于多个文件中,编译器知道变量数据类型,而链接器则不知道数据类型,即变量类型对链接器是透明的,只知道一个符号的名字,并不知道类型是否一致。当定义多个类型不一致的符号时,链接器该如何处理呢?

一种情况是两个强符号,当然直接链接器报错,不允许强符号多重定义;
二种情况是一个强符号,其余是弱符号。肯定直接只选择强符号,而不管数据类型的空间那个大;
三种情况是多个弱符号,选择数据类型占据内存空间最大的那个定义。

当编译器将一个编译单元编译成目标文件时,如果编译单元包含了弱符号,那么弱符号最终占据空间大小是未知的,因为它不知道其他编译单元中该弱符号占据的空间大小,所以编译器无法为该弱符号在BSS段分配空间,因为所需空间大小未知。但链接器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhang_P_Y

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值