问题描述
我是C和链接器的新手,对不起,如果我的问题听起来很奇怪。
我在线检查,发现dlfcn.c
,ld-linux.so
都被称为动态链接程序,然后出现libdl.so
,它是动态链接程序库,其名称是什么,所以它们之间的关系是什么? / p>
dlfcn.c
和其他基本的.C文件用于生成ld-linux.so
吗?如果是,那么ld-linux.so
和libdl.so
有什么区别?
解决方法
ld-linux.so
...就是我所说的“动态链接器”:
当ELF文件需要动态库时,此文件由Linux内核与ELF文件一起加载。
文件ld-linux.so
包含将ELF文件所需的动态库(例如libc.so
)从磁盘加载到内存的代码。
libdl.so
此文件是一个动态库,其中包含dlopen()
或dlsym()
之类的功能:
这些功能允许程序“动态”加载动态库-这意味着程序可以调用函数来加载动态库。
许多用例之一是用户可以在某些配置对话框中配置的插件(因此这些插件不会出现在可执行文件内部存储的必需文件列表中)。
dlfcn.c
我不确定,但是该文件似乎是libdl.so
的源代码的一部分。