我在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)
答案 0 :(得分:1)
您无法将MSVCRT(Windows C库)静态链接到MinGW,但这不应该是一个大问题。所有Windows版本都应该出现MSVCRT.dll
,KERNEL32.dll
,USER32.dll
。您无需重新分发它们。