prolj 发表于 2010-04-29 09:16

熟悉ar的来给讲讲吧,我有点儿不明白。

ld是o为单位的,ar是把几个o打包在一起(具体怎么回事儿我不知道,知道就不困惑了),那么静态链接的时候,ld是把一个o都复制过去啊,还是只复制一个func啊?因为binutils的核心是bfd,bfd的接口都是section的,我想是把整个o都复制过去,又不确定,还有ar的原理也不明白。
牛群啊,你出来吧,我是冯巩。

qtdszws 发表于 2010-04-29 10:07

一个o都复制过去

ar 就是把所有的.o简单拼接在一起打包

ar文件的头部还可以创建一个索引,指出哪个符号在哪个.o文件中,这样可以加快链接速度

zxrjkl 发表于 2010-04-29 10:17

回复 1# prolj
静态链接只链接调用的函数

comesun_cpp 发表于 2010-04-29 13:02

学习下

prolj 发表于 2010-04-29 13:08

扯淡!ld就是以o为单位的,bfd只提供section的信息。
ar文件头索引出哪个符号在哪个.o,然后ld去copy这个o过去。

beepbug 发表于 2010-05-01 07:41

整个O过去,那链接是快,可生成的质量太糟了。
大的没试过,曾试过一单片机的。因为单片机特讲究内存空间,试过,只链接调用的那个函数的目的码。
页: [1]
查看完整版本: 熟悉ar的来给讲讲吧,我有点儿不明白。