res and tool
so管理
LD_LIBRARY_PATH 來處理非標(biāo)準(zhǔn)路經(jīng)的共享庫
如果只是指定了庫名稱鹅颊,在dlopen會按照下面的機(jī)制去搜尋:
根據(jù)環(huán)境變量LD_LIBRARY_PATH查找
根據(jù)/etc/ld.so.cache查找
查找依次在/lib和/usr/lib目錄查找眼耀。
Linux 運(yùn)行的時(shí)候邑退,是如何管理共享庫(*.so)的?在 Linux 下面,共享庫的尋找和加載是由 /lib/ld.so 實(shí)現(xiàn)的。 ld.so 在標(biāo)準(zhǔn)路經(jīng)(/lib, /usr/lib) 中尋找應(yīng)用程序用到的共享庫。
但是岸霹,如果需要用到的共享庫在非標(biāo)準(zhǔn)路經(jīng),ld.so 怎么找到它呢将饺?
目前贡避,Linux 通用的做法是將非標(biāo)準(zhǔn)路經(jīng)加入 /etc/ld.so.conf痛黎,然后運(yùn)行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加載共享庫的時(shí)候刮吧,會從 ld.so.cache 查找湖饱。
靜態(tài)庫較適宜于較小的應(yīng)用程序,因?yàn)樗鼈冎恍枰钚∠薅鹊暮瘮?shù)杀捻。而對于需要多個(gè)庫的應(yīng)用程序來說井厌,則適合使用共享庫,因?yàn)樗鼈兛梢詼p少應(yīng)用程序?qū)?nèi)存(包括運(yùn)行時(shí)中的磁盤占用和內(nèi)存占用)的占用致讥。這是因?yàn)槎鄠€(gè)應(yīng)用程序可以同時(shí)使用一個(gè)共享庫仅仆;因此,每次只需要在內(nèi)存上復(fù)制一個(gè)庫垢袱。要是靜態(tài)庫的話蝇恶,每一個(gè)運(yùn)行的程序都要有一份庫的副本。