静态链接时的Windows依赖关系

时间:2015-02-15 14:31:48

标签: windows gcc dll dependencies mingw

我在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)

1 个答案:

答案 0 :(得分:1)

您无法将MSVCRT(Windows C库)静态链接到MinGW,但这不应该是一个大问题。所有Windows版本都应该出现MSVCRT.dllKERNEL32.dllUSER32.dll。您无需重新分发它们。