@Solar: That's excellent advice, and useful information.
@timwilliams: something just occurred to me, and while I doubt it is relevant to this particular issue, it will certain come up soon enough: is your OS-Dev GCC installation set up as a
GCC Cross-Compiler? If not, we strongly recommend that you create a separate cross-compiler (C::B should be able to set up projects to use the cross-compiler version for your OS dev work, without interfering with any 'normal' development).
I am also going to repeat the advice we've given you before: set the IDEs aside entirely for a while and use the command line, so you get a feeling for what is actually going on without the helpful-but-often-confusing IDE getting in the way. You can use a more basic
programming editor for editing the code, such as
Emacs,
Sublime Text (which isn't free, but enough programmers swear by it that I'd be remiss if I didn't mention it),
Notepad++, TextPad,
SCiTE, or
Light Table (which is pretty good, IMO, but as I said earlier is still very young and a little rough around the edges) - or any of the hundreds of others you can choose from. There is no rule saying that the build and project management has to be integrated into your editor. You may even decide that it is less of a hassle than the IDEs were, something that a lot of experienced programmers agree on. A good IDE is a powerful tool, but it can get in the way -
especially when you are starting out and trying to understand what is going on.
For Windows, I recommend installing
Cygwin, rather than using the MinGW version of GCC that is bundled with Code::Blocks, as it gives you a much more complete Unixoid environment. Note that (as is explained in the cross-compiler page) you will need to explicitly select the following packages when you run the installer: GCC, G++, Make, Flex, Bison, Diffutils, libintl-devel, libgmp-devel, libmpfr-devel, libmpc-devel, Texinfo. There are several others you might want to install as well, but those are pretty much the minimum for the job.
For the shell, you can use Powershell, but you will probably get better results if you use the version of BASH that is bundled with the Cygwin build. Once you have Cygwin install, use
that to build a separate cross-compiler, making sure that the xc has a different name from the 'standard' Windows build of GCC (something like 'gcc-myos' perhaps).
Alternatively, you can set up a simple Linux installation (either dual-boot, if that is an option - it probably isn't, and would be a hassle anyway - or in a virtualizer such as VirtualBox or VMWare) and use that. While that has some distinct advantages for OS work, it means learning a new OS and using it, so that's unlikely to be the best course of action unless you want to take a few weeks or months learning Linux before proceeding. If you do that - especially if you are using a VM - you will probably want to pick a
distro that is more minimalistic, such as
Puppy or
TinyCore, rather than a full-featured one such as Ubuntu or Fedora;
Distro Watch provides a lot of information about what different distros are like, and Wicked-Pedo has a
list of lightweight distributions that would fit the bill.
On second thought, that would probably be a good idea anyway - it might help you get a better understanding of what different OSes are really like. If you only know one OS - be it Windows, and specific Linux distro, or MacOS - you probably need to expand your horizons a bit to really see how approaches to OS issues can differ. Hell, it might even be a good idea to walk through the
Linux From Scratch build process once you are comfortable with Linux in general, or at least read through the documentation on it - it can be a real eye-opener about what building a production-grade OS installation really means. Regardless if what you might think of Linux - plenty of people here hate it, and even those who like it often find it aggravating - you can learn a lot from it that way.
Spending some time on a Mac wouldn't be a bad idea, either. Maybe set up a few VMs for things like
FreeBSD (a simple install of it should have come with Bochs, actually),
Kolibri,
Pintos,
SkyOS,
Ghost (you're in the right place for help on that!),
Haiku or
Syllable, while you're at it. You might even set up an emulator for one of the older systems such as
Apple II or
Commodore 64 and get a feel for what those were like. Getting a broader view almost always helps.