一、Windows四个主要编译工具套件
- MSVC:Windows原生编译套件,Microsoft Visual C++,VS2019默认使用,编译生成原生Windows程序。
- Cygwin:不仅移植GCC,还移植了Linux命令(如ls、mkdir、clear),依赖cygwin1.dll模拟POSIX层,兼容性和移植性更好,适合Linux软件移植。
- MinGW:GCC编译工具链在Windows平台的移植,生成原生Windows程序,不依赖cygwin1.dll。
- MSYS2:结合MinGW的GCC和Cygwin的配套工具,注重生成原生Windows应用,命令基于Cygwin修改,C运行时库使用MSVCR。
二、工具套件的区别与兼容性
- MinGW的gcc.exe不依赖cygwin1.dll,生成原生Windows程序。
- Cygwin的gcc.exe依赖cygwin1.dll,提供POSIX模拟层,支持fork、spawn、signals等Linux特性。
- MSYS2使用MinGW的gcc,命令工具基于Cygwin修改。
- 这些工具主要用于生成Windows平台的lib(静态库)、dll(动态库)、exe(可执行文件),不能生成Linux ELF格式文件。
- 混用不同编译器可能导致ABI兼容问题,如MinGW生成的dll给MSVC使用时。