我有C程序,我在Windows上用mingw
进行编译。它工作正常,但需要MSVCRT.DLL
。我想链接静态(就像我可以在Visual Studio中做的那样)。这可能吗?我可以使用mingw静态链接MSVCRT吗?
我试过-static
标志到gcc
,它没有做任何改变。
对于使用标准C++库的C++程序怎么样?
我有C程序,我在Windows上用mingw
进行编译。它工作正常,但需要MSVCRT.DLL
。我想链接静态(就像我可以在Visual Studio中做的那样)。这可能吗?我可以使用mingw静态链接MSVCRT吗?
我试过-static
标志到gcc
,它没有做任何改变。
对于使用标准C++库的C++程序怎么样?
我相信MinGW由于版权原因不使用静态运行时库。
你也许可以尝试使用newlib(http://sourceware.org/newlib/),以创建一个不链接到msvcrt.dll
+1版权回避。这是它已经在每个Windows系统上的一个聪明的副作用。使用MinGW构建的程序需要它,但不必分发它。因此,没有版权问题。 – RBerteig 2010-10-15 18:33:20
即使我没有在代码中使用任何std C函数,它需要MSVCRT我认为对于在main之前/之后运行的CRT启动/清除代码。 newlib也提供这个功能吗? – zaharpopov 2010-10-16 06:48:33
已经花了,而搜索对于我自己,我碰到this post介绍正在进行Mingw32备用C运行时间库。但是,它尚未准备好使用,开发人员似乎已经放弃了它。 Home page link here。
在这里发布这个答案,希望它对未来某些时候用户搜索引擎有用。
关于你的最后一个问题......如果你在谈论STL,它只是标题。 – 2010-10-15 14:59:46
@Armen:但还没有C++ MSVCPT的DLL或类似的东西? – zaharpopov 2010-10-15 15:12:22
请注意,MSVCRT.DLL作为系统组件包含在几乎每个Windows版本中,而您通常可能会遇到这种情况。特别是,您不需要将它与您的应用程序一起分发,因为您的最终用户已经拥有了它。那么一个自然的问题是,为什么你需要避免与其动态链接呢? – RBerteig 2010-10-15 18:31:16