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