linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题
態(tài)庫(kù)./libpos.so、 /root/test/env/lib/libpos.so和/root/test/conf/lib/libpos.so。我們?cè)儆迷闯绦?pos_lib.c(見(jiàn)程序5)來(lái)創(chuàng)建動(dòng)態(tài)庫(kù)/lib/libpos.so,用源程序pos_usrlib.c(見(jiàn)程序6)來(lái)創(chuàng)建動(dòng)態(tài)庫(kù) /usr/lib/libpos.so。
#include
void pos()
{
printf("/lib\n");
}
程序5: pos_lib.c
#include
void pos()
{
printf("/usr/lib\n");
}
程序6: pos_usrlib.c
這 樣我們得到五個(gè)動(dòng)態(tài)庫(kù)libpos.so,這些動(dòng)態(tài)庫(kù)的名字相同,且都包含相同函數(shù)原型 的公用函數(shù)pos。但存儲(chǔ)的位置不同和公用函數(shù)pos 打印的結(jié)果不同。每個(gè)動(dòng)態(tài)庫(kù)中的公用函數(shù)pos都輸出該動(dòng)態(tài)庫(kù)所存放的位置。這樣我們可以通過(guò)執(zhí)行例3中的可執(zhí)行文件pos得到的結(jié)果不同獲知其搜索到了 哪個(gè)動(dòng)態(tài)庫(kù),從而獲得第1個(gè)動(dòng)態(tài)庫(kù)搜索順序,然后刪除該動(dòng)態(tài)庫(kù),再執(zhí)行程序pos,獲得第2個(gè)動(dòng)態(tài)庫(kù)搜索路徑,再刪除第2個(gè)被搜索到的動(dòng)態(tài)庫(kù),如此往復(fù), 將可得到Linux搜索動(dòng)態(tài)庫(kù)的先后順序。程序pos執(zhí)行的輸出結(jié)果和搜索到的動(dòng)態(tài)庫(kù)的對(duì)應(yīng)關(guān)系如表1所示:
程序pos輸出結(jié)果
使用的動(dòng)態(tài)庫(kù)
對(duì)應(yīng)的動(dòng)態(tài)庫(kù)搜索路徑指定方式
./
./libpos.so
編譯目標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫(kù)搜索路徑
/root/test/env/lib
/root/test/env/lib/libpos.so
環(huán)境變量LD_LIBRARY_PATH指定的動(dòng)態(tài)庫(kù)搜索路徑
/root/test/conf/lib
/root/test/conf/lib/libpos.so
配置文件/etc/ld.so.conf中指定的動(dòng)態(tài)庫(kù)搜索路徑
/lib
/lib/libpos.so
默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑/lib
/usr/lib
/usr/lib/libpos.so
默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑/usr/lib
表1: 程序pos輸出結(jié)果和動(dòng)態(tài)庫(kù)的對(duì)應(yīng)關(guān)系
創(chuàng)建各個(gè)動(dòng)態(tài)庫(kù),并放置在相應(yīng)的目錄中。測(cè)試環(huán)境就準(zhǔn)備好了。執(zhí)行程序pos,并在該命令行中設(shè)置環(huán)境變量LD_LIBRARY_PATH。
# LD_LIBRARY_PATH=/root/test/env/lib ./pos
./
#
根據(jù)程序pos的輸出結(jié)果可知,最先搜索的是編譯目標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫(kù)搜索路徑。然后我們把動(dòng)態(tài)庫(kù)./libpos.so刪除了,再運(yùn)行上述命令試試。
# rm libpos.so
rm: remove regular file `libpos.so'? y
# LD_LIBRARY_PATH=/root/test/env/lib ./pos
/root/test/env/lib
#
根據(jù)程序pos的輸出結(jié)果可知,第2個(gè)動(dòng)態(tài)庫(kù)搜索的路徑是環(huán)境變量LD_LIBRARY_PATH指定的。我們?cè)侔?root/test/env/lib/libpos.so刪除,運(yùn)行上述命令。
# rm /root/test/env/lib/libpos.so
rm: remove regular file `/root/test/env/lib/libpos.so'? y
# LD_LIBRARY_PATH=/root/test/env/lib ./pos
/root/test/conf/lib
#
第3個(gè)動(dòng)態(tài)庫(kù)的搜索路徑是配置文件/etc/ld.so.conf指定的路徑。刪除動(dòng)態(tài)庫(kù)/root/test/conf/lib/libpos.so后再運(yùn)行上述命令。
# rm /root/test/conf/lib/libpos.so
rm: remove regular file `/root/test/conf/lib/libpos.so
總結(jié)
以上是生活随笔為你收集整理的linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 握手失败_拜托了,看完这篇别再问我什么是
- 下一篇: linux双小于命令,Linux文本比较