有没有可能在没有库的情况下编译c++ ?

Is it possible to compile c++ without any lib?

本文关键字:编译 情况下 c++ 有可能      更新时间:2023-10-16

是否可以在没有任何库的情况下编译c++ ?因为当我试图编译我的程序与Mingw和cygwin .exe文件后,我无法运行它,它说有一个缺失的库。对于cygwin,它是"cygwin .dll"

使用Cygwin构建的二进制文件总是依赖于cygwin1.dll。但是,如果您想避免这种情况,请使用链接器选项-mno-cygwin。这样你就可以确保你的应用不会依赖于cygwin运行时库。

MinGW也有一些本地依赖项。特别是libgcc_s_dw2-1.dll(取决于工具链中使用的unwind类型)和mingwm10.dll。要消除它们,请为链接器使用-static-libgcc-mthreads选项。请注意c++异常依赖于这个选项。

注意,然而。你的问题-"有没有可能编译没有任何库的c++ ?"是不正确的,因为有总是一些依赖库(除非你正在为无操作系统的裸机硬件构建二进制文件),例如Windows的user32.dll。当然,Cygwin和MinGW都不适合。

它不仅仅是一个库;它是运行用Cygwin编译的应用程序所需的运行时。

如果你真的使用MinGW,那么你可以完全避免Cygwin与-mno-cygwin,但即使这样,你将需要MinGW运行时,可能,c++标准库。然而,这些通常可以静态地链接到,这样您就不需要发布任何依赖项。

一般答案是否定的。c++代码通常需要的运行时支持,以启用RTTI和异常处理等特性。所以无论如何,你必须将可执行文件与libstdc++链接,无论是动态的还是静态的。

相关文章: