有没有可能在没有库的情况下编译c++ ?
Is it possible to compile c++ without any lib?
是否可以在没有任何库的情况下编译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++链接,无论是动态的还是静态的。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在已经使用Git的情况下减少编译时间
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- 我可以在不使用Qt for Webassembly的情况下使用Emscripten编译Qt吗?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 我可以在不创建项目的情况下在Visual Studio 2019中编译和运行HelloWorld.cpp吗?
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 在我的 CLR 项目中添加包含会导致无法在启用 /clr 的情况下编译 WLR
- 如何在没有Cygwin或Visual Studio的情况下编译Magick++?
- 在哪种情况下,C++会在编译时进行数组边界检查?
- 如何在不制作Visual Studio 2017项目的情况下编译C++文件?
- 如何减少编译时间:在包含未触及的头文件的情况下
- 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此大括号初始化列表代码
- 如何在不退出和失去断点的情况下重新加载重新编译的二进制文件
- 在没有 -g 选项的情况下编译,但我想获得更详细的调试信息
- 在没有 AVX 的情况下编译提升
- 如何在Ubuntu中不加编译器硬化的情况下编译宝石
- 即使我传递了无效的类型参数,我为什么还能在没有错误的情况下编译此代码