天天看點

CentOS下添加動态連結庫的方法

一些C/C++編譯好後,當運作時,報錯說無法加載共享庫,例如:

./write: error while loading shared libraries: libhdfs.so.0.0.0: cannot open shared object file: No such file or directory
           

發生這種報錯的原因是,編譯的程式運作期間需要依賴某個共享庫, 比如上面,write可執行程式需要依賴一個叫“libhdfs.so”的共享庫。(動态連結庫與靜态連結庫的差別,請百度相關文檔)

解決上面的問題有兩種方式,下面兩種的任何一種都可以:

第一:在/etc/profile中添加共享庫的路徑:

export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:/home/dcc/libhdfs
           

如上,添加了兩個路勁下的共享庫,注意,路勁之間用冒号(“:”)隔開。

第二:在/etc/ld.so.conf中添加路徑,然後重新加載共享庫:

vi /etc/ld.so.conf
           

編輯後如下:

include ld.so.conf.d/*.conf
/home/dcc/libhdfs
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/
           

入上,分别添加了兩個路徑,每個路徑占一行。編輯完後,重新加載庫:

/sbin/ldconfig -v
           

至于兩種方法的差別,我推測, 第一種是隻在執行C/C++程式時才會加載,而第二種應該是針對整個系統,啟動時就加載。

繼續閱讀