FreeBSD Shared object "libintl.so.4"或(libc.so.4) n

发表于:2007-07-01来源:作者:点击数: 标签:
Shared object "libintl.so.4" 或 (libc.so.4) not found 問題敘述: 近來的FreeBSD版本,常常在安裝某些軟體時,會出現類似的失敗畫面 並且告訴你缺乏 libintl.so.4或是 libc.so.4 這個函式. Shared object "libc.so.4" not found 如下圖:是近來版本安裝某些程

Shared object "libintl.so.4" 或 (libc.so.4) not found 問題敘述: 近來的FreeBSD版本,常常在安裝某些軟體時,會出現類似的失敗畫面 並且告訴你缺乏 libintl.so.4或是 libc.so.4 這個函式. Shared object "libc.so.4" not found 如下圖:是近來版本安裝某些程式問題時常見的問題,缺少 libc.so.4 函式. 問題分析: 提到libc.so函式 首先想到的是與 linux 程式相關共享函式庫. FreeBSD在讀取相關函式前,首先會在 /compat/linux 資料夾中尋找; 然後若找不到則會嘗試搜尋 /lib 資料夾. 以 libc.so 函式為例,會先尋找/compat/linux/lib/libc.so ; 其次才是/lib/libc.so . 簡單的解決方式: Shared object "libintl.so.4" not found 跟 libc.so 函式一樣 也是在安裝某些軟體就會出現錯誤畫面. 問題分析: libintl.so 函式是安裝 /usr/port/devel/gettext/ 程式後取得. 理論上來說 目前版本的相關函數是 libintl.so.5 為何還要去讀取舊的 libintl.so.4 版本. 當你在安裝gmake時,gmake會去連結安裝gmake當時的libinl.so的版本,是version 4. 也就是 libintl.so.4 當你更新過相關的ports (devel/gettext) 將會用 libintl.so.5 取代 libintl.so.4 除非你能取得先前某些系統保留舊有的 libintl.so.4 否則就會出現安裝失敗的狀況. 很可惜的是...有很多程式需要 gettext 函式. 你可以用 cd /usr/ports/ ; make search key="gettext" | more 查詢 為什麼要加上more 因為太多怕你看到昏頭...QQ 問題解決: 要解決這個問題 你可以透過重新建立所有與 gettext 相關的ports程式. # portupgrade -fr gettext 重新建立或重新安裝所有與 gettext相關連的程式, 若你忘掉了 請參閱 更新ports/升級系統 > portupgrade 軟體更新 或是簡單的用偷吃步 把*目前版本*link過去..QQ (版本6..類推) 然後就可以順利進行程式安裝.

原文转自:http://www.ltesting.net