When I make a cross compiler, I typically use --prefix=/tmp/root and --with-sysroot=/tmp/root. When I am building x86_64-pc-mingw32 from an x86_64-pc-linux machine, and I don't pu tthe target system headers anywhere, gcc fails saying that they need to be located in /tmp/root/mingw/include. So basically, it is looking in $sysroot/mingw/include. Ok. But then, when I take the same machine and try to build i686-pc-cygwin as the target, and I don't put the headers in the tree (so that I can see the same error message), gcc fails saying that they need to be located in /tmp/root/usr/include. So then I tried doing the same scenario with a target of i686-pc-mingw32. This time, it looks in the /tmp/root/mingw/include directory as in the first example. Why is this?