linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题
態庫./libpos.so、 /root/test/env/lib/libpos.so和/root/test/conf/lib/libpos.so。我們再用源程序 pos_lib.c(見程序5)來創建動態庫/lib/libpos.so,用源程序pos_usrlib.c(見程序6)來創建動態庫 /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
這 樣我們得到五個動態庫libpos.so,這些動態庫的名字相同,且都包含相同函數原型 的公用函數pos。但存儲的位置不同和公用函數pos 打印的結果不同。每個動態庫中的公用函數pos都輸出該動態庫所存放的位置。這樣我們可以通過執行例3中的可執行文件pos得到的結果不同獲知其搜索到了 哪個動態庫,從而獲得第1個動態庫搜索順序,然后刪除該動態庫,再執行程序pos,獲得第2個動態庫搜索路徑,再刪除第2個被搜索到的動態庫,如此往復, 將可得到Linux搜索動態庫的先后順序。程序pos執行的輸出結果和搜索到的動態庫的對應關系如表1所示:
程序pos輸出結果
使用的動態庫
對應的動態庫搜索路徑指定方式
./
./libpos.so
編譯目標代碼時指定的動態庫搜索路徑
/root/test/env/lib
/root/test/env/lib/libpos.so
環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑
/root/test/conf/lib
/root/test/conf/lib/libpos.so
配置文件/etc/ld.so.conf中指定的動態庫搜索路徑
/lib
/lib/libpos.so
默認的動態庫搜索路徑/lib
/usr/lib
/usr/lib/libpos.so
默認的動態庫搜索路徑/usr/lib
表1: 程序pos輸出結果和動態庫的對應關系
創建各個動態庫,并放置在相應的目錄中。測試環境就準備好了。執行程序pos,并在該命令行中設置環境變量LD_LIBRARY_PATH。
# LD_LIBRARY_PATH=/root/test/env/lib ./pos
./
#
根據程序pos的輸出結果可知,最先搜索的是編譯目標代碼時指定的動態庫搜索路徑。然后我們把動態庫./libpos.so刪除了,再運行上述命令試試。
# rm libpos.so
rm: remove regular file `libpos.so'? y
# LD_LIBRARY_PATH=/root/test/env/lib ./pos
/root/test/env/lib
#
根據程序pos的輸出結果可知,第2個動態庫搜索的路徑是環境變量LD_LIBRARY_PATH指定的。我們再把/root/test/env/lib/libpos.so刪除,運行上述命令。
# 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個動態庫的搜索路徑是配置文件/etc/ld.so.conf指定的路徑。刪除動態庫/root/test/conf/lib/libpos.so后再運行上述命令。
# rm /root/test/conf/lib/libpos.so
rm: remove regular file `/root/test/conf/lib/libpos.so
總結
以上是生活随笔為你收集整理的linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 握手失败_拜托了,看完这篇别再问我什么是
- 下一篇: 泥浆配制_朝政泥浆——广西田阳县百东河水