为什么Windows上的MinGW不需要静态链接?

时间:2018-08-08 18:17:45

标签: c linux windows mingw

我已经在Linux机器上安装了MinGW并安装了MinGW软件包,但是,我注意到我无法在没有MinGW的Windows机器上运行程序,我对其进行了查找,很快发现该解决方案这是静态链接。这行得通,但是必须静态链接所有内容仍然很烦人,并且没有太大意义。我注意到,在安装了MinGW的Windows计算机上,我可以编译程序而无需静态链接任何内容,并且该程序可以在任何Windows计算机上成功运行,无论是否安装了MinGW。

我的Linux机器正在运行 Arch Linux ,并安装了mingw-w64-gcc AUR软件包(如果该信息有帮助的话)。

1 个答案:

答案 0 :(得分:1)

Linux和Windows共享库/动态链接库在发现方式上相似。您的mingw程序可以在已安装mingw的Windows中运行,因为该安装可能会将DLL添加到您的搜索路径中。在DLL搜索顺序上查看this article

静态链接时,所有这些库代码都包含在可执行文件中。

如果要与朋友共享mingw程序,则还需要安装其在搜索路径中使用的所有共享库。您可以使用sysinternals listdlls(或其他工具)来查找依赖项,并将其包含在与exe相同的目录中,或将它们安装到库路径(请参阅搜索顺序文章)。

您也可以查看这篇文章; How do I find out which dlls an executable will load?,因为它还有很多其他选择。