apache mysql 程序员 linux 微软 wordpress google nginx Firefox Android centos java shell Windows Python Ubuntu php 开源 云计算 编程

连接目标文件到指定的库

 Linux下找不到共享庫文件的典型現象為明明已經安裝某個軟包(如libnet,mysql),編譯連接可以正常進行,但是在運行時出現如“error while loading shared libraries: libnet.so.1:cannot open shared object file :No such file or directory”的錯誤提示。

 原因是Linux下的共享庫路徑配置不正確。默認的linux共享庫搜索路徑為/lib和/usr/lib兩個目錄(不包含子目錄),若共享庫不在這兩個路徑,不能自動連接到(最典型的就是usr)。

 解決方法有五種:

1,連接時使用靜態庫(.a文件)。在g++命令上寫入該.a文件的完整路徑。

2,使用LD_LIBRARY_PATH環境變量。(臨時有效,且有時候沒有效果),把需要添加的路徑加入到ld_LIBRARY_PATH中,註意如果多於一個要用冒號隔開。如:export LD_LIBRARY_PATH

3,將動態庫文件復制到可以搜索到的路徑(一般是系統默認的路徑)裏面,這樣比較狠,但是可能導致一些後即問題。

4,編譯的時候設定:在編譯源碼的時候可以用參數:-Wl, -rpath指定動態搜索的路徑即可。

5,修改系統文,添加路徑,運行ldconfig命令。

延伸阅读

评论