我想知道为什么动态链接程序必须在哪个库中搜索哪个函数。
可以通过编译时链接程序将此信息放入elf文件吗?
完成此操作后,动态链接程序可以直接查找功能而不是进行搜索。
答案 0 :(得分:0)
我想知道为什么动态链接程序必须在哪个库中搜索哪个函数。
与在静态链接时记录在哪个共享库中定义符号相反,并仅在 中搜索该库,类似于在Windows上发生的情况?
有几个原因:
LD_PRELOAD
。对于(1),您仍然可以记录定义符号的 first 库。
对于(3),turns out某些构建系统违反了通常的情况(具有10,000个共享库),并且搜索所有构建系统的开销变得非常大。尽管有一些方法可以避免这种开销,而又不会使常规的符号查找规则无效。