The Windows and Linux runtimes are different. You will need to recompile your code on your target architecture. If you compiled your code on one linux distro, there's a chance that you may be able to run it on another, given there are no library conflicts, and that the architecture is the same. You can use the -static flag to avoid possible issues with shared libraries. A cross-compiler toolchain is what you need if you have to compile your code on one machine that targets another machine. To give a small example, if you wanted your code to run on an embedded system, you would need to port OS-specific functions using something like newlib. Because Linux distros all use the same kernel, this is not an issue. Clearly, though, Windows and Linux are completely different.
g++.