【发布时间】:2020-01-01 08:35:30
【问题描述】:
我目前正在编写一个动态链接器,但有一些问题困扰着我。 为什么 ld.so(我系统的动态链接器)是共享对象? 为什么它不能只是一个静态可执行文件(ET_EXEC)?
我尝试在 linux 内核的 binfmt_elf.c 中寻找答案,但据我了解,它清楚地表明您的 ELF 解释器可能是静态可执行文件。
编辑:我想我的想法总结为:动态链接器可以是一个简单的 ELF 可执行文件 (ET_EXEC) 吗?
/* First of all, some simple consistency checks */
if (interp_elf_ex->e_type != ET_EXEC &&
interp_elf_ex->e_type != ET_DYN)
goto out;
PS:我希望这是正确的地方,我不知道我应该把它放在这里还是放在 Unix 堆栈交换上。 如果我的问题很愚蠢但没有答案让我发疯,我也很抱歉。
【问题讨论】:
-
设计理念的选择? she-bang 机制有一个解释文件的可执行文件。你是在问为什么装载机不采取同样的行动?我想这可能是流程问责制的经济问题......