Several inux software development systems in windows, MinGW, are a collection of windows gcc versions and do not need to rely on the middle layer.
MSYS is a simulation of a small linux environment. It can be combined with MinGW to simulate the use of MinGW gcc in a linux environment.
Cygwin is a powerful linux environment, because cygwin1.dll converts underlying windows APIs to linux APIs. Therefore, development in Cygwin is equivalent to development in linux. for developers, it is equivalent to calling linux-type APIs. Therefore, such programs can be directly transplanted to linux. However, if such a program is to be executed on windows, cygwin1.dll must be supported during running. According to the above analysis, if you develop a linux cross-platform program in windows, Cygwin and gcc in the linux simulator are good choices, but the developed program must depend on a cygwin1.dll. If you only want to use the gcc compiler in windows and do not want to rely on other dll, mingw is a good choice. Another method is virtual machines. This is a complete linux System in windows, but it has the highest requirements on machine performance.