以在Linux上运行的C应用程序为例,它与所需的共享库动态链接。
我知道.so文件应该在环境变量LD_LIBRARY_PATH中定义的路径中找到。
动态链接器是否在应用程序启动时加载此库?或者只能在需要从该库调用函数时才加载它吗?如果是后者,它如何才能真正知道哪个函数属于哪个库?
发布于 2022-09-01 08:26:40
在Linux上,程序启动时加载库。有些系统(例如Windows或Solaris)支持延迟加载特性,将库加载延迟到调用其函数之一(在本例中,静态链接器将将哪些函数所属的信息嵌入到可执行文件中)。
可以使用像Implib.so这样的工具在Linux上模拟延迟加载。
https://stackoverflow.com/questions/73559753
复制相似问题