COFF格式续篇—Lib文件的结构

本文详细介绍了Lib文件的结构,作为COFF目标文件的补充。Lib文件实际上是一系列目标文件的集合,简化了代码管理和重用。文章讲解了Lib文件中的Longname Sec、Obj Sec、First Sec、Second Sec等节的结构和作用,以及它们的数据组织形式,如SectionHeader、符号表和目标文件数据。此外,还提及了Little-Endian与Big-Endian的转换问题和动态链接库(DLL)的导出库结构。
摘要由CSDN通过智能技术生成
    上一篇文章介绍了COFF目标文件的结构。如果你试着做一个应用程序的连接器(Linker),就会发现,仅仅有目标文件是不够的。我们在连接程序时,不仅仅要用到目标文件,库文件也是必不可少的。
    库文件是怎么样的结构呢?
    其实,库文件的结构也很简单。它就是“一堆”目标文件的集合。把目标文件做成库以后,我们在使用目标文件中所实现的功能时,连接程序会自动在库文件里查找相应的目标文件,并使用它。这大大减少了我们对目标文件的管理工作,减轻了代码重用的负担。
     Lib文件中的节
    COFF格式中所用到的“节”的概念再次出现在Lib格式中。不过,Lib文件的节要简单得多。先让我们来看看它的整体结构:
    如右图所示:
    Lib格式只有四种类型的节(Section),即First Sec,Second Sec,Longname Sec和Obj Sec;其中Second Sec与Longname Sec是可选节,很多Lib文件中都没有。而开头的Singature只是一个标识,它相当于COFF目标文件中的魔法数字。它是一个长度为8的字符串,值为“!<arch>/n”。
    First Sec,顾名思义,就是第一个节。它包含了库中所有的符号名以及这些符号所在的目标文件在库中的位置(绝对偏移)。
    Second Sec就是第二节。它的内容和First Sec是相同的。不同的是,Second Sec是一个有序表,通过它来查找库中的符号比通过First Sec来查找要快很多。
</
Signature
First Sec
Second Sec
Longname Sec
Obj Sec1
Obj Sec2
……
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值