我想让我的c++项目跨平台,我正在考虑使用Cygwin/MinGW。 但是它们之间有什么区别呢?
另一个问题是,我是否能够在没有Cygwin/MinGW的系统上运行二进制文件?
我想让我的c++项目跨平台,我正在考虑使用Cygwin/MinGW。 但是它们之间有什么区别呢?
另一个问题是,我是否能够在没有Cygwin/MinGW的系统上运行二进制文件?
当前回答
为了补充其他答案,Cygwin附带了MinGW库和头文件,你可以在不链接到cygwin1.dll的情况下使用-mno-cygwin标志与gcc进行编译。比起使用普通的MinGW和MSYS,我更喜欢这个。
其他回答
不要忽视AT&T的U/Win软件,该软件旨在帮助您在windows上编译Unix应用程序(最新版本- 2012-08-06;使用Eclipse公共许可证,版本1.0)。
像Cygwin一样,他们必须与图书馆赛跑;在它们的情况下是POSIX.DLL。AT&T的人都是很棒的工程师(同样的团队给你带来了ksh和dot),他们的东西值得一看。
Cygwin模拟整个POSIX环境,而MinGW是仅用于编译的最小工具集(编译本地Win应用程序)。所以,如果你想让你的项目跨平台,MinGW显然是两个选择之一。
尽管你可能会考虑在Windows上使用VS,在Linux/ unix上使用GCC。大多数开源项目都这样做(例如Firefox或Python)。
Cygwin使用兼容层,而MinGW是本地的。这是主要的区别之一。
请注意,两者之间的效用行为确实不同。
例如,Cygwin tar可以fork -,因为DLL中支持fork(),而mingw版本则不支持。当试图从源代码编译mysql时,这是一个问题。
Cygwin是Microsoft Windows的类unix环境和命令行界面。
Mingw是GNU Compiler Collection (GCC)到Microsoft Windows的原生软件移植,以及一组用于Windows API的可自由分发的导入库和头文件。MinGW允许开发人员创建本地Microsoft Windows应用程序。
您可以在没有cygwin环境的情况下运行用mingw生成的二进制文件,前提是提供了所有必要的库(dll)。