error while loading shared libraries: libiconv.so.2

最近調試Zabbix的時候出現了一個錯誤:

/etc/init.d/zabbix_agentd start 

Starting zabbix_agentd:  /opt/program/zabbix/sbin/zabbix_agentd: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory                     [FAILED]

原因分析:

ld提示找不到庫文件,而庫文件就在當前目錄中。
鏈接器ld默認的目錄是/lib和/usr/lib,如果放在其他路徑也可以,需要讓ld知道庫文件在哪裏。

 

方法1:

編輯/etc/ld.so.conf文件,在新的一行中加入庫文件所在目錄;

運行ldconfig,以更新/etc/ld.so.cache文件;

方法2:

在/etc/ld.so.conf.d/目錄下新建任何以.conf爲後綴的文件,在該文件中加入庫文件所在的目錄;

運行ldconfig,以更新/etc/ld.so.cache文件;

 

本人覺得第二種辦法更爲方便,對於原系統的改動最小。因爲/etc/ld.so.conf文件的內容是include /etc/ld.so.conf.d/*.conf。所以,在/etc/ld.so.conf.d/目錄下加入的任何以.conf爲後綴的文件都能被識別到。

 

本人的作法: 

1. 將所有的用戶需要用到的庫放到/usr/loca/lib;  

2. 在/etc/ld.so.conf.d/目錄下新建文件usr-libs.conf,內容是:/usr/local/lib  

3. #sudo ldconfig

ld.so.cache的更新是遞增式的,就像PATH系統環境變量一樣,不是從頭重新建立,而是向上累加。

除非重新開機,纔是從零開始建立ld.so.cache文件。

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