前言
-
musl ldso 是按照什么次序加载动态链接的应用程序的共享库的?如果共享库之间有依赖, musl ldso 如何处理先初始化哪个 共享库?
-
musl ldso 的代码可以在 musl 官方代码:
ldso\dlstart.c
与ldso\dynlink.c
,其中动态库加载部分主要在ldso\dynlink.c
中的load_library
函数中实现。
动态库加载次序
- 当前 musl ldso 加载次序 与
readelf -d xx.so
依赖动态库列表显示的一致,这个加载次序是链接时的依赖库的次序。如果想调整这个次序,就调整链接时的各个依赖库的先后次序即可
-
动态库的加载次序,是按次序把依赖的动态库加载到内存,这个次序依次加载大部分情况下不重要
-
如果两个没有依赖的共享库需要加载,动态库的初始化有先后的次序关系,建议调整链接时的动态库的先后次序,让需要先初始化的动态库放在前面(左边)文章来源:https://www.toymoban.com/news/detail-672924.html
-
依赖库初始化次序:这个重要,被依赖的先初始化,musl ldso 的设计满足这个要求,比如 A->B->C,则动态库初始化次序是:C->B->A。文章来源地址https://www.toymoban.com/news/detail-672924.html
到了这里,关于musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!