当前位置: 技术问答>linux和unix
为什么链接器本身是个ld.so文件? 那又由谁去把这个ld.so加载到进程空间呢?
来源: 互联网 发布时间:2017-02-23
本文导语: 今天在看,里面P126显示一个调用了共享库的进程,内存映像的一个图。里面在高地址(堆栈的下方),是链接器。 我上网搜了一下,发现ld确实是一个动态库ld.so. 问题是,人不能提着头发把自己抓起来,对吧,那么ld....
今天在看,里面P126显示一个调用了共享库的进程,内存映像的一个图。里面在高地址(堆栈的下方),是链接器。
我上网搜了一下,发现ld确实是一个动态库ld.so.
问题是,人不能提着头发把自己抓起来,对吧,那么ld.so怎么把自己加载到进程地址空间呢?
这个ld又是链接的工具,又是程序装载的工具,如何被调用的呢?
我上网搜了一下,发现ld确实是一个动态库ld.so.
问题是,人不能提着头发把自己抓起来,对吧,那么ld.so怎么把自己加载到进程地址空间呢?
这个ld又是链接的工具,又是程序装载的工具,如何被调用的呢?
|
程序装载的工具,没说库本身就是装载程序吧。
可执行文件包含一个import directory表,表的每一项包含一个库的名字。
根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。
可执行文件包含一个import directory表,表的每一项包含一个库的名字。
根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。