There are three options recommended by ST as a compiler. These are IAR Workbench, Atollic True Studio and Keil MDK-ARM. These tools are pretty restricted in some way, except for the Atollic command line tools. The restriction usually comes in the forms such as code size limitation.
Now the STM32 is just a ARM Cortex M3 core device, so there are many other ARM compilers available. The GNU toolchain also support the ARM core. This is the compiler that I choose as it is not limited in anyway.
The simplest way to to grab the lite version from Code Soucery. This will provide you with the full GNU toolchain including the binutils as well. However, as it stands, it is only driven from the command line.