I agree with others that if you install something like Ubuntu Linux, it's not that hard to learn. But to answer your actual question, the main issue is to avoid using Windows APIs unintentionally. My favorite environment for this is the AT&T U/Win toolset, which is designed for compiling POSIX apps on windows. It seems to generate fewer complaints from developers than mingw, which in turn generates fewer complaints than cygwin.