一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務(wù)器之家 - 服務(wù)器系統(tǒng) - Linux - Linux下動(dòng)態(tài)鏈接庫加載路徑及搜索路徑問題

Linux下動(dòng)態(tài)鏈接庫加載路徑及搜索路徑問題

2022-03-08 17:06Linux教程網(wǎng) Linux

這篇文章主要介紹了Linux下動(dòng)態(tài)鏈接庫加載路徑及搜索路徑問題,需要的朋友可以參考下

引子

近日,服務(wù)器遷移后,偷懶未重新編譯nginx的,直接./nginx啟動(dòng),結(jié)果遇到如下問題:
“error while loading shared libraries”
這是是因?yàn)樾枰膭?dòng)態(tài)庫不在動(dòng)態(tài)鏈接器ld.so的搜索路徑導(dǎo)致。

ld.so 動(dòng)態(tài)共享庫搜索順序

1、ELF可執(zhí)行文件中動(dòng)態(tài)段DT_RPATH指定;gcc加入鏈接參數(shù)“-Wl,-rpath”指定動(dòng)態(tài)庫搜索路徑;
2、環(huán)境變量LD_LIBRARY_PATH指定路徑;
3、/etc/ld.so.cache中緩存的動(dòng)態(tài)庫路徑。可以通過修改配置文件/etc/ld.so.conf 增刪路徑(修改后需要運(yùn)行l(wèi)dconfig命令);
4、默認(rèn)的 /lib/;
5、默認(rèn)的 /usr/lib/

與動(dòng)態(tài)鏈接庫相關(guān)命令

(1)ld 是gcc的鏈接程序。
(2)ldd是查看可執(zhí)行文件中所依賴的庫的程序,比如想查main程序用到了那些動(dòng)態(tài)庫,可以直接 ?ldd main
(3)ldconfig用來更新文件/etc/ld.so.conf的修改生效。
(4)nm用來查看.so庫中的函數(shù)名字,標(biāo)記是T的就是動(dòng)態(tài)庫里面生成的名字。如:nm /lib/libc*.so

Linux 下動(dòng)態(tài)鏈接庫搜索路徑問題

Linux動(dòng)態(tài)鏈接庫的搜索路徑按優(yōu)先級排序?yàn)椋?/p>

1.編譯目標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫搜索路徑;

在編譯時(shí)通過gcc 的參數(shù)”-Wl,-rpath,”指定。當(dāng)指定多個(gè)動(dòng)態(tài)庫搜索路徑時(shí),路徑之間用冒號”:”分隔。

2.環(huán)境變量LD_LIBRARY_PATH指定的動(dòng)態(tài)庫搜索路徑;

3.配置文件/etc/ld.so.conf中指定的動(dòng)態(tài)庫搜索路徑;

/etc/ld.so.conf的第一行有個(gè)引用命令:include ld.so.conf.d/*.conf

因此,最優(yōu)雅的方式是在ld.so.conf.d目錄下創(chuàng)建一個(gè)你的程序依賴的配置文件,配置文件內(nèi)容為程序依賴的動(dòng)態(tài)鏈接庫的路徑,一個(gè)路徑一行。

添加完配置文件后執(zhí)行l(wèi)dconfig使其生效。

4.默認(rèn)的動(dòng)態(tài)庫搜索路徑/lib;

5.默認(rèn)的動(dòng)態(tài)庫搜索路徑/usr/lib;

1、可以用 LD_LIBRARY_PATH 環(huán)境變量指定,這個(gè)類似于 PATH 機(jī)制,比較直觀,而且,可以放到 bashrc 中固化下來,也可以放到自己的 .bashrc 中只對本用戶起作用;

2、如果啟用了 ld.so.cache 的話,系統(tǒng)會(huì)在 /etc/ld.so.cache 中存儲(chǔ)所有可引用的動(dòng)態(tài)鏈接庫。這個(gè)文件的內(nèi)容可以通過 /etc/ld.so.conf 來指定;這個(gè)是比較固定的機(jī)制,對全局所有用戶都有影響;不過更改設(shè)置后需要 root 調(diào)用 ldconfig 來刷新一下。

3、默認(rèn)的標(biāo)準(zhǔn)庫路徑,這個(gè)似乎不用設(shè)置就可以。包括 /lib 和 /usr/lib。當(dāng)然,如果是64位系統(tǒng),還包括 /lib64 和 /usr/lib64。

4、其它情況,如果只想對某一個(gè)特定的應(yīng)用程序起作用的話,可以在編譯時(shí)指定搜索路徑。gcc 的 -Wl 和 -rpath 參數(shù)。

奇怪的是, /usr/local/lib 和 /usr/local/lib64 居然不在標(biāo)準(zhǔn)路徑之列。

總結(jié)

以上所述是小編給大家介紹的Linux下動(dòng)態(tài)鏈接庫加載路徑及搜索路徑問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 催眠白丝舞蹈老师小说 | 久久九九有精品国产23百花影院 | 色老板美国在线观看 | 天天色天天舔 | 欧美人与禽交片在线播放 | 寡妇快点好大好爽视频 | 日本亚欧乱色视频在线观看 | 东京干福利 | 国产精品中文 | 污黄漫 | 国产免费午夜高清 | 亚洲欧美日韩天堂 | 我们日本在线观看免费动漫下载 | 国产日韩欧美色视频色在线观看 | 国产欧美又粗又猛又爽老 | 国产老妇 | 人人爽人人香蕉 | 性xxxxbbbbxxxx中国 | 美女全身体光羞羞漫画 | 果冻传媒在线播放观看w | 久久精品视在线观看85 | 欧美久久久久久久一区二区三区 | 亚洲视频在线一区二区 | 精品日韩欧美一区二区三区 | 久久精品国产清白在天天线 | 猛h辣h高h文湿重口 门房秦大爷在线阅读 | 免费一级片在线观看 | 欧美日韩成人在线视频 | 东北疯狂xxxxbbbb中国 | 好女孩韩剧免费观看 | 国产精品亚洲片在线不卡 | 色妞女女女女女bbbb | 欧美在线一级视频 | 欧美一级片观看 | 色综色天天综合网 | 果冻传媒mv在线观看入口免费 | 91拍拍| 国产卡一卡二卡3卡乱码免费 | 国产日韩欧美成人 | 99热最新 | 欧美人体高清在线观看ggogo |