您尚未登录。

#1 2018-07-02 16:28:14

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 526

linux上的可执行程序是怎么加载的?

我看了man7.org上关于execve的文档,ELF是被PT_INTERP指定的(/lib/ld-linux.so)动态链接器加载的,这玩意通过mmap加载ELF文件的,这不就成了用户态加载器了不是吗?那ld-linux.so本身咋加载的,我用readelf看它没有INTERP这个segment,它直接由内核加载么?

离线

#2 2018-07-02 22:16:55

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,859
个人网站

Re: linux上的可执行程序是怎么加载的?

ld.so 没有 interp,所以内核从它的「起始地址」(位于 ELF 头里)开始执行。
也有人在用户空间实现了 exec

程序员的自我修养—链接、装载与库.pdf

离线

页脚