以在Linux上运行的C应用程序为例,该应用程序与所需的共享库动态链接。
我知道.so
文件应该在环境变量LD_LIBRARY_PATH
中定义的路径中找到。
动态链接器是否在应用程序启动时加载此库?或者它只能在需要该库的函数调用时加载它?如果是后者,它实际上如何知道哪个函数属于哪个库?
在Linux上,库在程序启动时加载。某些系统(如Windows或Solaris(支持延迟加载功能,该功能会延迟库加载,直到调用其中一个函数(在这种情况下,静态链接器会将哪个函数属于哪个库的信息嵌入到可执行文件中(。
可以使用Implib.so.等工具在Linux上模拟延迟加载