我目前正在编写一个动态链接器,有一些问题困扰着我。为什么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堆栈交换上。 如果我的问题很愚蠢,我也很抱歉,但是没有答案让我感到疯狂。