我想知道我在符号表引用方面询问的共享库是如何工作的。当我们包含一个共享库时,它是否会导出符号表以进行处理,然后根据一些指针执行相应的函数。
共享库条的含义是什么?
编辑:-我想知道共享库在加载到内存时是如何工作的。\当一个函数让我们说 Fun() 从库中具有 def 的应用程序中调用时。那么这种链接是如何发生的。我希望现在它清楚了。
我想知道我在符号表引用方面询问的共享库是如何工作的。当我们包含一个共享库时,它是否会导出符号表以进行处理,然后根据一些指针执行相应的函数。
共享库条的含义是什么?
编辑:-我想知道共享库在加载到内存时是如何工作的。\当一个函数让我们说 Fun() 从库中具有 def 的应用程序中调用时。那么这种链接是如何发生的。我希望现在它清楚了。
程序通过过程链接表调用共享库,该表由动态链接器/加载器ld.so
根据动态符号表和重定位条目中的信息填充。在 Linux 上,这些数据以格式存储在程序和库中ELF
,您可以使用objdump
和readelf
.
这篇 Linux Journal 文章有一个基本的概述。有关更多详细信息,请查看 Ulrich Drepper 的优秀论文How To Write Shared Libraries和 Solaris Linker and Libraries Guide。