歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.10安裝配置缺失的庫文件lib文件so文件

Ubuntu 10.10安裝配置缺失的庫文件lib文件so文件

日期:2017/2/28 16:26:40   编辑:Linux教程

一般,Ubuntu下的庫文件名字都是lib開頭。然後以什麼什麼so。x。x。x版本號結尾。

然後呢,經常從網上找個tar。gz的包包下來,說是linux 32bit的,

放到主文件夾解壓縮,右擊主程序,選擇權限,配好可讀可寫,完了,加上可運行權限。

完了,雙擊該主程序,運行,什麼反應都沒有。。。

心情very的-_-#

然後只好,gnome-terminal命令行模式,cd命令進入主程序所在文件夾,

完了sudo 該程序的主程序文件名,比如sudo ./ceshichengxu

以這樣的方式來運行,

完了,提示,./ceshichengxu: error while loading shared libraries: 某某.so.x.x: cannot open shared object file: No such file or directory

讓人心情非常的不好。

就這種怎麼解決?提示“某某.so.幾點幾”版本的庫文件沒有的問題。

首先比較頭疼的就是,你要知道這種文件哪裡去找。一般常見的,有libstdc++5,這個,現在Ubuntu 10.10已經很方便了,新立得源裡直接就有,直接搜索libstdc++5,就能找到這個包,完了自動就給你把這個包裝了。

但是比如我今天撞見這個,說缺NL.so.1.6。完了,官方網站給的下載包提供了libNL.so.1.6.4這個文件。

那怎麼辦?

手動安裝lib。so。這種文件的配置安裝方法:

首先要知道這個程序他要求的lib庫文件的文件夾在哪裡,可能有人就說了,/lib呗,/usr/lib呗,要不就是/usr/local/lib,這個你不要想當然,我見過默認庫文件夾指向/usr/lib32的,弄得我心裡ooxx的。

但是一般這種,都是解壓縮完了,程序都是作者編譯好成binary可執行程序的,那我哪知道他默認怎麼寫的庫文件默認路徑阿?

這個有辦法!

使用ldd命令,比如,sudo ldd ./ceshichengxu

然後就應該列出了需要的庫包。

比如我的ldd就是列出這樣,

linux-gate.so.1 => (0x001a3000)
libpthread.so.0 => /lib/libpthread.so.0 (0x002ef000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x0077c000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x001a4000)
libdl.so.2 => /lib/libdl.so.2 (0x0083c000)
libz.so.1 => /lib/libz.so.1 (0x0064c000)
NL.so.1.6 => not found
libstdc++.so.5 => not found
libm.so.6 => /lib/libm.so.6 (0x00efe000)
libc.so.6 => /lib/libc.so.6 (0x009c6000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00110000)
/lib/ld-linux.so.2 (0x00fd4000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x0012c000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00ded000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00b77000)
他執行程序時候提示error while loading shared libraries: NL.so.1.6: cannot open shared object file: No such file or directory
但是實際ldd檢測發現的是,你看有2個程序運行所依賴的庫都沒有找到。
但是好在我這次遇到這個,官方包裡帶了libNL.so.1.6.4,但是,你看他缺的是NL。so。1.6,這怎麼安裝?我手動復制到/usr/lib,沒用阿,還是我提示缺庫文件! 【6688電子商務網站 www.6688.cc 】
這個就是,一定要使用ln -s命令。
你看ldd列出來,所需要的庫文件,主要都是/usr/lib下的,證明這個程序很有可能,運行的時候庫依賴主要都到/usr/lib去找,
那麼,alt-f2,呼出快捷命令輸入,gksu nautilus,開root權限文件夾管理器,把libNL.so.1.6.4這個文件復制到/usr/lib下,Ubuntu會自動幫你改權限。
完了,注意了,開gnome-terminal,cd /usr/lib,進入/usr/lib文件夾,
完了,sudo ln -s libNL.so.1.6.4 NL.so.1.6
這樣之後,NL.so.1.6這個鏈接和libNL。so。1.6.4這個庫文件都在/usr/lib文件夾底下。
然後libstdc++5.so。5,我通過新立得,搜索libstdc++安裝過了,所以現在包庫都裝齊全了,

再在終端中,cd命令,到主程序的文件夾,再運行sudo ./ceshichengxu就一切正常,程序正常啟動了。

ok。以上。

Copyright © Linux教程網 All Rights Reserved