【发布时间】:2015-02-15 14:31:47
【问题描述】:
我在 Windows 上使用 GCC 4.8.2 (MinGW) 进行编译。我在我的程序中使用 openMP。当我在没有 -static 标志的情况下编译时,我从 dumpbin /dependents myapp.exe 得到这个输出:
Dump of file myapp.exe
File Type: EXECUTABLE IMAGE
Image has the following dependencies:
KERNEL32.dll
msvcrt.dll
USER32.dll
libgomp-1.dll
现在将 libgomp-1.dll 包含在与 myapp.exe 相同的文件夹中是不够的,因为这取决于更多的 .dll(libwinpthread-1.dll 和 libgcc_s_seh-1.dll),而 dumpbin 只会进入一级深。
现在我在编译标志中包含 -static 进行编译,并从 dumpbin 中获得以下输出:
File Type: EXECUTABLE IMAGE
Image has the following dependencies:
KERNEL32.dll
msvcrt.dll
USER32.dll
它现在可以在没有 libgomp-1.dll 所依赖的 .dll 的情况下工作吗? GCC 是否也包含这些库的静态版本? dumpbin 是否能够检测到这些新依赖项?
(我可能在这里有点偏执,但这些东西很难在本地机器上测试,因为我在 PATH 的许多地方都有这些 dll)
【问题讨论】:
-
kernel32和user32库是操作系统的一部分。它们不能静态链接(因为这意味着在您的可执行文件中复制操作系统的一部分,这没有意义),但出于同样的原因,它们不需要链接。
标签: windows gcc dll dependencies mingw