dlfcn.c、ld-linux.so和libdl.so有什么关系?

what's the relationship between dlfcn.c, ld-linux.so and libdl.so?

我是 C 和链接器的新手,如果我的问题听起来很奇怪,抱歉。

上网查了一下,dlfcn.cld-linux.so都叫动态链接器,然后是libdl.so,顾名思义就是动态链接库,它们之间有什么关系?

dlfcn.c 和其他必要的 .C 文件是否用于生成 ld-linux.so?如果是,那么 ld-linux.solibdl.so 有什么区别?

ld-linux.so

...就是我所说的“动态链接器”:

当 ELF 文件需要动态库时,此文件由 Linux 内核与 ELF 文件一起加载。

文件ld-linux.so包含将ELF文件所需的动态库(例如libc.so)从磁盘加载到内存的代码。

libdl.so

此文件是一个动态库,包含 dlopen()dlsym():

等函数

这些函数允许程序“动态”加载动态库 - 这意味着程序可以调用函数来加载动态库。

许多use-cases之一是用户可以在某些配置对话框中配置的plug-ins(因此这些plug-ins不会出现在存储在可执行文件中的所需文件列表中).

dlfcn.c

我不太确定,但这个文件似乎是 libdl.so.

源代码的一部分