2

我經常遇到這個問題,當我爲我的程序創建一個安裝程序時,我錯過了它依賴的一些文件。如何找出我的程序依賴於哪些文件?

在Windows上:

我經常錯過一些DLL的安裝我的系統上。我通常只是通過在一個文件夾中移動可執行文件來測試我的安裝,以查看哪個DLL需要它。但它會使用它在我的system32文件夾中找到的DLL - 這些DLL可能存在於其他用戶的系統中,可能不是。

其他方式我發現我在十六進制編輯器中打開EXE並搜索模式'.DLL'。但是dll也可以依賴於其他的dll。

有沒有一個(最好是免費的)工具,可以告訴我什麼DLL是我的程序需要?所以我不會錯過任何東西。

在Linux上:

Linux版本有一個很好的包管理系統。在這些系統中製作安裝程序意味着爲他們製作一個軟件包。我可以找出我的程序需要什麼.so(共享對象)文件。但是,如何確定哪個軟件包包含.SO文件,以便在打包時可以將該軟件包添加爲依賴項?

回答

2

在Windows上,您要找的是一個名爲Dependency Walker的工具,它告訴您EXE(或另一個DLL)依賴哪些DLL。

在Linux上,請參閱Dependency resolution in Linux

+0

解決方案的windows部分。 在Linux上,我知道ldd實用程序,但我需要一些可以指出哪些軟件包包含該文件的東西。因爲linux包需要包依賴而不是文件依賴。 – Calmarius 2011-03-17 17:41:08

+0

@Calmarius每個軟件包系統都有一個工具,可以告訴哪些軟件包包含特定文件,它應該是通過文檔處理的問題。例如'dpkg'有'dpkg -S {/ path/to/file}' – CharlesB 2011-03-18 08:59:20

相關問題