一些C/C++編譯好后,當運行時,報錯說無法加載共享庫,例如:
[plain] view plaincopy
./write: error while loading shared libraries: libhdfs.so.0.0.0: cannot open shared object file: No such file or directory
發(fā)生這種報錯的原因是,編譯的程序運行期間需要依賴某個共享庫, 比如上面,write可執(zhí)行程序需要依賴一個叫“libhdfs.so”的共享庫。(動態(tài)鏈接庫與靜態(tài)鏈接庫的區(qū)別,請百度相關文檔)
解決上面的問題有兩種方式,下面兩種的任何一種都可以:
第一:在/etc/profile中添加共享庫的路徑:
[plain] view plaincopy
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:/home/dcc/libhdfs
如上,添加了兩個路勁下的共享庫,注意,路勁之間用冒號(“:”)隔開。
第二:在/etc/ld.so.conf中添加路徑,然后重新加載共享庫:
[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
vi /etc/ld.so.conf
編輯后如下:
[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
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/
入上,分別添加了兩個路徑,每個路徑占一行。編輯完后,重新加載庫:
[plain] view plaincopy在CODE上查看代碼片派生到我的代碼片
/sbin/ldconfig -v
至于兩種方法的區(qū)別,我推測, 第一種是只在執(zhí)行C/C++程序時才會加載,而第二種應該是針對整個系統(tǒng),啟動時就加載。