dlfcn.c,ld-linux.so和libdl.so之间是什么关系?

问题描述

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

我在线检查,发现dlfcn.cld-linux.so都被称为动态链接程序,然后出现libdl.so,它是动态链接程序库,其名称是什么,所以它们之间的关系是什么? / p>

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()之类的功能:

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

许多用例之一是用户可以在某些配置对话框中配置的插件(因此这些插件不会出现在可执行文件内部存储的必需文件列表中)。

dlfcn.c

我不确定,但是该文件似乎是libdl.so的源代码的一部分。