前言
-
musl ldso 是按照什么次序加載動(dòng)態(tài)鏈接的應(yīng)用程序的共享庫(kù)的?如果共享庫(kù)之間有依賴(lài), musl ldso 如何處理先初始化哪個(gè) 共享庫(kù)?
-
musl ldso 的代碼可以在 musl 官方代碼:
ldso\dlstart.c
與ldso\dynlink.c
,其中動(dòng)態(tài)庫(kù)加載部分主要在ldso\dynlink.c
中的load_library
函數(shù)中實(shí)現(xiàn)。
動(dòng)態(tài)庫(kù)加載次序
- 當(dāng)前 musl ldso 加載次序 與
readelf -d xx.so
依賴(lài)動(dòng)態(tài)庫(kù)列表顯示的一致,這個(gè)加載次序是鏈接時(shí)的依賴(lài)庫(kù)的次序。如果想調(diào)整這個(gè)次序,就調(diào)整鏈接時(shí)的各個(gè)依賴(lài)庫(kù)的先后次序即可
-
動(dòng)態(tài)庫(kù)的加載次序,是按次序把依賴(lài)的動(dòng)態(tài)庫(kù)加載到內(nèi)存,這個(gè)次序依次加載大部分情況下不重要
-
如果兩個(gè)沒(méi)有依賴(lài)的共享庫(kù)需要加載,動(dòng)態(tài)庫(kù)的初始化有先后的次序關(guān)系,建議調(diào)整鏈接時(shí)的動(dòng)態(tài)庫(kù)的先后次序,讓需要先初始化的動(dòng)態(tài)庫(kù)放在前面(左邊)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-672924.html
-
依賴(lài)庫(kù)初始化次序:這個(gè)重要,被依賴(lài)的先初始化,musl ldso 的設(shè)計(jì)滿(mǎn)足這個(gè)要求,比如 A->B->C,則動(dòng)態(tài)庫(kù)初始化次序是:C->B->A。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672924.html
到了這里,關(guān)于musl libc ldso 動(dòng)態(tài)加載研究筆記:動(dòng)態(tài)庫(kù)的加載次序與初始化次序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!