首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

为什么链接器本身是个ld.so文件? 那又由哪位高手去把这个ld.so加载到进程空间呢

2012-05-22 
为什么链接器本身是个ld.so文件? 那又由谁去把这个ld.so加载到进程空间呢?今天在看C专家编程,里面P126

为什么链接器本身是个ld.so文件? 那又由谁去把这个ld.so加载到进程空间呢?
今天在看<<C专家编程>>,里面P126显示一个调用了共享库的进程,内存映像的一个图。里面在高地址(堆栈的下方),是链接器。

我上网搜了一下,发现ld确实是一个动态库ld.so.

问题是,人不能提着头发把自己抓起来,对吧,那么ld.so怎么把自己加载到进程地址空间呢?
这个ld又是链接的工具,又是程序装载的工具,如何被调用的呢?

[解决办法]
程序装载的工具,没说库本身就是装载程序吧。
可执行文件包含一个import directory表,表的每一项包含一个库的名字。
根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。

热点排行