I am now assuming that you are new to programming and Unix, and that you see this from the perspective of someone entering from the outside:
"Hey, there are two systems here, I want my program to run on both of them"
The simple answer is: Forget it. The different systems are made for different purposes, and in principle, there is no reason to want to run the same binary on both.
The better answer is:
You have made a Windows program and want it tu run under Linux.
Make sure it runs under Wine (
www.winehq.org) - I have one example program at users.skynet.be/atle/acuwine.tgz
Then, remember: This program will ONLY run on a PC.
The best way is to make sure programs are source compatible, that they don't use any win32-specific calls, that they are made using autoconf.
That way, your programs will run on Apple ][, Cray T3, Dec Alpha, TRS-80 Model-16 running Xenix, ND-100 running SinTran, PC running DOS - and Linux and Windows.
This may be confusing, but it will seem natural in a short while.
Read about the i386, the SPARC/UltraSPARC, compare binary codes, read about the Linux kernel, read Matt Petrek 'Undocumented Windows'.
After that last one, you will even wonder that anything runs at all :-)
Atle