是否可以在没有任何lib的情况下编译c ++? 因为当我试图用.w文件制作后用Mingw和cygwin编译我的程序时,我无法运行它,它说有一个丢失的库。对于cygwin来说,它是“cygwin1.dll”。
答案 0 :(得分:4)
使用Cygwin构建的二进制文件始终依赖于cygwin1.dll
。 Hovewer,如果你想避免这种情况,请使用链接器选项-mno-cygwin
。这样您就可以确保不需要依赖于您需要随应用程序一起提供的cygwin运行时库。
MinGW也有一些本地依赖。特别是,libgcc_s_dw2-1.dll
(取决于工具链中使用的展开类型)和mingwm10.dll
。要摆脱它们,请为链接器使用-static-libgcc
和-mthreads
选项。请注意,C ++异常取决于此选项。
答案 1 :(得分:2)
这不仅仅是一个图书馆;它是运行使用Cygwin编译的应用程序所需的运行时。
如果您真的使用MinGW,那么您可以完全避免使用-mno-cygwin
Cygwin,但即使这样,您也需要MinGW运行时,可能还需要C ++标准库。但是,这些通常可以静态链接,这样您就不需要发送任何依赖项。
答案 2 :(得分:2)
一般答案 - 没有。 通常,C ++代码所需的运行时支持,以启用RTTI和异常处理等功能。 所以无论如何,你必须动态或静态地将可执行文件与libstdc ++链接起来。