I am writing a hobby operating system, loosely based on this resource : http://www.brokenthorn.com/Resources/OSDevIndex.html
It is a pretty well known resource but it has quite a few issues. Thus, I have used it mainly as a set of guidelines to achieve and not as a complete tutorial.
I am using a 64-bit linux operating system, and I want to write a 32 bit operating system.
Using assembly language, I have been able to write a bootloader, manage a FAT12 filesystem to read file names, printing routines, etc. in 16 bit real mode.
I have also managed to write some assembly code in 32 bit protected mode, but it is obvious that I will have to move on to C - the language best suited for this purpose. This is where I face many issues: what compiler do I use? What is a cross compiler: Something that generates the executables that run on my OS or something that I write the OS using? How can I incorporate runtime libraries? Do I need them initially? And many more :(
Note: I have written Linux executables in C and have a good grasp of the basics, but I might need a few resources that teach advanced C, or specifically gcc.
I would greatly appreciate some pointers or resources.