In addition to using GCC, which will simply compile the source into the binary executables, there's a number of development environments that have both windows and linux ports - allowing you to effortlessly switch between the two OSs.
The two that come to mind immediately are Code::Blocks and Eclipse. With each of these the IDE is essentially identical from one os to another. Unfortunately, in my opinion, Eclipse is written in Java, so it runs as quick as honey in the winter-time, though it does offer an experience that more closely mirrors that of Visual Studio compared to CB. There's better intellisense and debugging support in Eclipse, for instance.
Depending on the type of programs you wish to make, you may also wish to investigate cross-platform GUI libraries, as the MS Windows system and the X-Windows subsystems are both very different.
Again, I've a pair of suggestions - those being WxWidgets and GTK.
Oh! Just remembered about a third option - QT Creator. Tried that about 5 years ago and it seemed okay. Not really for me, but a perfectly capable and reasonably popular solution.
A couple links to peruse:
http://www.codeblocks.org[
^]
http://www.eclipse.org[
^]
http://www.wxwidgets.org/[
^]
http://www.gtk.org[
^]
http://qt.digia.com/product/developer-tools/[
^]