一、可執行文件/二進制文件依賴共享庫
ldd命令用來查看可執行文件依賴的共享庫文件。
$ ldd --help
Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
示例:
$ ldd helloworld
二、共享庫依賴共享庫關系
上面的ldd命令無法查看共享庫的依賴關系,因為共享庫本身並不是可執行文件,我們可以使用
objmp -x libhelloworld.so | grep NEEDED
其中,libhelloworld.so是你的庫名稱。
附:
readelf命令用於讀取ELF Header信息
② linux怎麼將所有的依賴打包
對於rhel、centos、Fedora、Oracle Linux可以使用yum install 對於Debian、Ubuntu可以使用apt-get install 對於Suse,使用yast 對於Mandriva ,使用urpmi 對於Archlinux,使用pacman
③ Linux下程序運行依賴庫如何指定
so文件內部有一個自己的名字,可以和文件名不同,這個名字由鏈接器在link期間寫入so庫文件中。
你可以使用 readelf -a b.so | grep SONAME,來查看
這個內部名字不因為文件名變化而改變。
④ linux的依賴關系
你想知道什麼?
依賴關系最簡單的一個理解就是 Windows 上你玩游戲結果提示 directx 版本過低無法運行。以及常見的運行某個程序之後提示 mfc71.dll 未找到。還有就是用個軟體結果安裝說明上讓你先去安裝 .net 。
Linux 的依賴關系因為他的整個系統都是由各個不同的開發組開發的軟體集合而成(這點不知道電話是不可能理解Linux依賴關系的起因的),每個軟體都有不同的功能提供和調用。而 Linux 因為他的軟體包組成可以很靈活,某些軟體包不是必須的,有些軟體功能可以有很多軟體進行提供。所以有些軟體互相之間的功能需求就需要「依賴關系」這種描述來進行說明控制。
Windows 也有這個問題,只不過因為整個系統是微軟統一提供的,所以他可以進行版本介面公職,以及方便的通知附帶多個版本的函數庫和程序進行功能提供,以及強行的提供一些用戶其實根本不需要的軟體來提供Windows程序的「依賴關系」。依賴關系很明顯的就是一些超高精簡的 XP 去掉的內容會導致很多軟體不能運行。可以說,簡單的去掉 IE ,就可以讓很多 Windows 程序失去依賴關系而不能運行。
Linux 的軟體包管理器就是有解決這個問題而設計的原因。軟體包管理器通過分析軟體包裡面的描述信息和系統當前安裝情況的資料庫來確定依賴關系是否滿足和如何滿足依賴關系(也就是需要再安裝哪些軟體才行)。
⑤ 怎麼解決Linux安裝時的依賴問題
為什麼會依賴:
編寫軟體的人不想自己一個人做完所有的事情,就像尋求外援,於是就找上了各種各樣的軟體包。
舉個例子,我只是想寫一個QQ,但是如果沒有圖形界面庫(或者說我不用圖形界面庫),我就得自己想辦法怎麼在屏幕上畫一個窗口,怎麼顯示按鈕,怎麼顯示列表,怎麼……
好了,現在我們知道有GTK庫,Qt庫,在編寫程序的時候,我們只要調用他,告訴他我要在哪裡哪裡創建一個窗口,然後有什麼控制項,映射什麼信號,等等等等,等我們描述完了,圖形界面庫就開始在屏幕上繪圖,這個過程就不需要我們管了。
實際上,linux上的大多數圖形程序不是依賴GTK,就是依賴Qt,所以要是這些基本的庫不安裝的話,依賴關系肯定出問題,但不幸的是,一般發行版只裝一種庫,而你兩種庫的程序都用,就得自己裝另一種庫了(通常APT-GET給你解決)。
你要想安裝這些東西,就必須解決依賴關系,否則軟體無法運行。
在ubuntu系統中,查看依賴關系:
已安裝的包,可以 dpkg --status xxxxx 來查;未安裝的包,可以 dpkg --info xxxxx.deb;又或者用 apt 或到 去搜索及查閱
⑥ linux的依賴包有何用
Linux系統和其他操作系統一樣,都是模塊化的設計,也就是說功能互相依靠,有些功能需要一些其他功能來支撐,這樣可以提高代碼的可重用性:
大部分依賴包都是一些庫文件,有動態庫也有靜態庫,一個程序的依賴包如果沒有安裝,只安裝了這個程序本身是不能使用。對於這個程序A來說,它需要依賴一些程序,這些程序本身有些功能可以完成A的部分操作,因為這些依賴程序已經寫好了功能,不需要A程序再單獨寫一遍相應的功能,於是就可以借用這些依賴程序。
大體就是這樣,正如linux c編程中的數學庫等,libm.so庫文件中就定義了一些數學運算等。大體就是這樣~~
Gooood luck and 國慶快樂~~~
⑦ linux的依賴包有何用
Linux系統和其他操作系統一樣,都是模塊化的設計,也就是說功能互相依靠,有些功能需要一些其他功能來支撐,這樣可以提高代碼的可重用性:
大部分依賴包都是一些庫文件,有動態庫也有靜態庫,一個程序的依賴包如果沒有安裝,只安裝了這個程序本身是不能使用
你可以理解為似windows的庫文件,譬如DLL
比如我要裝某個軟體,這個軟體又依賴於某個開發包,這個開發包包含這個軟體所要運行
的環境文件,這就是依賴關系。
再舉個例子,比如我要去優酷看視頻一樣。
我就需要需要裝flash。因為優酷的播放器是基於flash開發的。
⑧ 在Linux系統中安裝軟體怎麼知道這個軟體需要什麼依賴
1、如果是自己編譯安裝,在configure的時候,控制台會明確指出缺少什麼程序和文件。
2、如果是別人的打包好的文件,redhat系的,是rpm -qp --requires xxx.rpm可以查看這個包依賴什麼別的包。
⑨ 為什麼linux有依賴關系
有句話說的好
linux 是由文件組成的
各個文件不是獨立存在的
相互之間存在依賴關系