centos7啓動ghubd報"error while loading shared libraries: xxx.so.x" 錯誤的原因和解決辦法

最近在學習linux,使用centos7啓動nginx時,報了error while loading shared libraries: libpcre.so.0,cannot open shared object file: No such file or directory,這個問題,自己也百度了,對應問題的描述,試了好幾種,沒有解決問題,最近找了公司的大牛給我解決了,以下時解決問題的方案:

原因一:操作系統裏確實沒有包含該共享庫(lib*.so.*文件)或者共享庫版本不對, 遇到這種情況那就去網上下載並安裝上即可;

解決方式:

wget https://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
tar -zxvf  pcre-8.00.tar.gz

cd pcre-8.00
./configure --enable-utf8
make
make check
make install

[root@centos7 ghubd]# locate libpcre
/root/pcre-8.00/libpcre.la
/root/pcre-8.00/libpcre.pc
....
/usr/local/lib/libpcre.so.0
/usr/local/lib/libpcre.so.0.0.1

看到有libpcre.so.0這個文件了,但是啓動nginx還是報同樣的錯誤,這個問題的解決是通過原因二的第二種情況,解決了。

原因二:已經安裝了該共享庫, 但執行需要調用該共享庫的程序的時候, 程序按照默認共享庫路徑找不到該共享庫文件,所以安裝共享庫後要注意以下共享庫路徑設置問題:

1、如果共享庫文件安裝到了/lib或/usr/lib目錄下, 那麼需執行一下ldconfig命令;

ldconfig是一個動態鏈接庫管理命令,其目的爲了讓動態鏈接庫爲系統所共享。ldconfig的主要用途:默認搜尋/lilb和/usr/lib,以及配置文件/etc/ld.so.conf內所列的目錄下的庫文件。搜索出可共享的動態鏈接庫,庫文件的格式爲:lib***.so.**,進而創建出動態裝入程序(ld.so)所需的連接和緩存文件。緩存文件默認爲/etc/ld.so.cache,該文件保存已排好序的動態鏈接庫名字列表。

2、如果添加的library不在/lib和/usr/lib裏面的話,就一定要修改/etc/ld.so.conf文件,往該文件追加library所在的路徑,然後也需要重新調用下ldconfig命令。比如在安裝mysql的時候,其庫文件/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf文件中:

[root@centos7 ghubd]# echo "/usr/local/lib" >> /etc/ld.so.conf
[root@centos7 ghubd]# ldconfig
[root@centos7 ghubd]# ldconfig -v | grep libpcre

3、如果添加的library不在/lib或/usr/lib下,但是卻沒有權限操作寫/etc/ld.so.conf文件的話,這時就需要往export裏寫一個全局變量LD_LIBRARY_PATH,就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章