ARM programming

I'm a bit confused about how programming on ARM works... I realise that the toolchain needs to be specific to the processor, but does it also need to be specific to the OS...For instance can I compile the 'Hello, world' program on ARM using both a FreeBSD built gcc as well as one built for Arch Linux?

The reason I ask is that I have installed an Arch Linux built U-Boot program on a Seagate GoFlex Home dock, and I'd like to know if this program is OS specific or is just a program loader?

Apologies if these are naive questions, but I have virtually no knowledge about ARM computers.