在Linux上查找Win exe所需的DLL(与mingw交叉编译)?

Mag*_*nus 8 linux dependencies mingw cross-compiling

我在Linux上使用MinGW交叉编译到Windows.让工作变得轻而易举.用所需的DLL打包它并不是那么简单.目前的解决方案是在Windows上运行可执行文件并复制DLL,直到它实际运行.

是否有一个Linux工具列出了我的Windows .exe所需的DLL?(类似于lddDependencyWalker 的组合.)

h0t*_*1r3 13

截至2015年末,没有工具链实用程序支持列出Windows二进制文件的动态依赖项(例如ldd或otool).

从我的测试中,通常可以看到完整的依赖列表,例如:

strings MY.EXE | grep -i '\.dll$'
Run Code Online (Sandbox Code Playgroud)

哈金,但它一直对我有用.

有关完整示例,请尝试在linux上的交叉环境中使用的此脚本.

  • 我刚刚[创建了一个小程序(`peldd`)](https://github.com/gsauthof/pe-util)正确读取可移植可执行文件(PE)的数据结构,以获取动态名称依赖.它使用了pe-parse库.`strings`方法是一个很好的一阶近似,但毫不奇怪,很容易得到误报. (4认同)

tan*_*nsy 10

$ objdump -p program.exe | grep "DLL Name:"
        DLL Name: KERNEL32.dll
        DLL Name: msvcrt.dll
Run Code Online (Sandbox Code Playgroud)

FWIW 可以使用objdumpwith -p(或-x) 选项。它比筛选“.dll”字符串要好得多,因为它很可能会给出很多误报。


gav*_*koa 8

检查您的实用程序是否支持 PE 格式objdump --help。如果没有,请安装 MinGW 的交叉编译器工具集(例如https://packages.debian.org/sid/mingw-w64)。

比看看:

objdump --private-headers $EXE
Run Code Online (Sandbox Code Playgroud)