是在启动时加载动态库,还是仅在可执行文件需要时加载



以在Linux上运行的C应用程序为例,该应用程序与所需的共享库动态链接。

我知道.so文件应该在环境变量LD_LIBRARY_PATH中定义的路径中找到。

动态链接器是否在应用程序启动时加载此库?或者它只能在需要该库的函数调用时加载它?如果是后者,它实际上如何知道哪个函数属于哪个库?

在Linux上,库在程序启动时加载。某些系统(如Windows或Solaris(支持延迟加载功能,该功能会延迟库加载,直到调用其中一个函数(在这种情况下,静态链接器会将哪个函数属于哪个库的信息嵌入到可执行文件中(。

可以使用Implib.so.等工具在Linux上模拟延迟加载

最新更新