SDCC - Small Devices C Compiler - is an open source compiler for Intel 8051 and several other architectures. As an alternative one could buy Keil or some other commercial compiler, but really, should you?...
This page has installation and other notes about SDCC.
Install from source
Make sure that you have certain packages installed (on debian/Ubuntu):
sudo apt-get install bison flex libboost-dev gputils
To get the latest sdcc source version in the current directory, check out the SDCC repository and build it like this:
svn co https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc sdcc cd sdcc ./configure
Respond to errors accordingly (you may need to install some support packages). Then:
make clean make sudo make install
If all went well, check the installed version like this: