2012-07-28 41 views
6

我在Linux上使用MinGW交叉編譯到Windows。做到這一點很輕鬆。用所需的DLL封裝起來並不那麼簡單。目前的解決方案是在Windows上運行可執行文件並複製到DLL,直到它實際運行。尋找Linux上的Win exe所需的DLL(與mingw交叉編譯)?

是否有一個Linux的工具,列出我的Windows .exe所需的DLL? (類似於ldd和DependencyWalker的組合)。

+0

爲什麼DependencyWalker對你來說不夠?它列出了exe所需的所有dll以及路徑中尚未找到的dll。 – Pankaj 2012-07-29 17:04:56

+0

這是不夠的,因爲DependencyWalker不是Linux可執行文件。我剛剛發現DW可以在控制檯中運行,但我仍然需要調查輸出是否可以連接到構建過程。無論如何,我認爲在Wine下運行DW是構建過程的一部分,絕對是最後的選擇。 – Magnus 2012-07-29 17:56:32

回答

9

截至2015年底,沒有工具鏈實用程序支持列出Windows二進制文件(如ldd或otool)的動態依賴關係。

從我的測試中,一個完整的依賴性列表,通常可以像看到:

strings MY.EXE | grep -i '\.dll$' 

的hackish,但它一直爲我工作。

有關完整的示例,try this script我在Linux上的交叉環境中使用。

+3

我剛剛[創建了一個小程序('peldd')](https://github.com/gsauthof/pe-util),它正確讀取可移植可執行文件(PE)的數據結構以獲取動態依賴關係。它使用pe-parse庫。 「琴絃」方法是一個很好的一階近似,但並不令人驚訝,容易得到誤報。 – maxschlepzig 2016-02-27 22:04:10

+1

@ h0tw1r3,你的管道幾乎是正確的。要正確地轉義'。'在命令行中,您需要轉義'\',否則grep會將'.dll $'視爲re。 – jeff6times7 2017-04-10 16:56:00