2010-07-27 45 views
4

我需要分發的GNU/Linux的二進制文件...對了Depends.exe GNU/Linux的

在Windows上,我可以運行一個名爲「帶的Depends.exe」,將驗證所有依賴該文件工具有,因此,我將能夠知道該文件隨附什麼,我如何在GNU/Linux上做同樣的事情?

澄清:我不是那個意思從字面上散發它(除非是一些特定的庫,從來沒有產生問題,如... libThatOnlyMySoftwareUseVersion0.00042895.08421thatnoonehas有點像盤算,用戶將需要...)

回答

9

你正在尋找在Linux上的實用工具被稱爲ldd。但是,請幫助用戶,並且不要考慮使用您的程序分發庫。要求您的用戶通過正確的渠道安裝先決條件。或者,更好的是,使用適當的安裝系統(如RPM,apt或portage)打包軟件(假設您不能使用源代碼分發和autotools);這樣做允許包管理系統通過拉入任何所需的庫來自動解決依賴關係。

使用ad-hoc方案分發版本庫只會給最終用戶帶來問題(類似於Windows上的DLL地獄)。它們最終會導致衝突,崩潰和可能的安全漏洞。

您可以使用ldd找出您的二進制文件依賴於哪些庫,這樣您可以在製作包的時候設置適當的依賴關係(一些打包程序,比如RPM,實際上是爲您做的)。

1

通常情況下,您將爲特定的Linux發行版構建一個linux二進制文件,並提供您自己的二進制文件,並要求用戶安裝其他文件。如果您使用的是使用rpm包的系統,那麼您需要閱讀如何構建RPM,如果您使用的是Debian變體,那麼您想了解如何構建二進制包。

如果你想手動檢查哪些庫二進制文件被鏈接到的則:

ldd /whereever/is/your/binary 

會給你鏈接庫的列表動態鏈接二進制文件。但你不想分配這些大部分,因爲它就像試圖重新分配system32.dll或windows.dll糟糕的主意:^)

+1

什麼是'system32.dll'和'windows.dll'? :P – 2010-07-27 01:55:41

+4

@Delan:我認爲某種惡意軟件;) – 2010-07-27 12:13:29

+0

@Dan +1以獲得正確答案 – 2010-07-27 16:21:24