How do I develop for STM32 discovery on Linux?
An easy way to program and debug the STM32 Discovery board (or any STM32 using an ST-Link programmer) is to use the 'stlink' project https://github.com/texane/stlink (however OpenOCD seems popular too)

ST Nucleo boards also appear as a USB flash device, so don't even need stlink - just copy the file over to them.

There are some good pages on how to develop for STM32 discovery on Linux, such as http://gpio.kaltpost.de/?page_id=131 and  http://torrentula.to.funpic.de/2012/03/22/setting-up-the-stm32f4-arm-development-toolchain/ and http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

However I found the last link the most useful. It shows how to build ST's STM32 projects as-is - The only change is to add his Makefile, which seems like a perfect solution.

On recent versions of Ubuntu, there is a package you can install which contains an ARM compiler:

sudo apt-get install gcc-arm-none-eabi


Note that the processors are all a bit different. STM32F0..4 will all need different compiler flags, and the linker script will be slightly different for each (although only really because of the changed RAM and Flash sizes).

Edit: if you want to get started really quickly you could also look at http://www.espruino.com. It's a JavaScript interpreter that runs on the STM32 itself, so once you've got 'stlink' installed so you can flash to the board you can just download an image from that site, flash it on, and then connect with a terminal application and start programming.