Recently through the course of my work, I have had the opportunity to reformat and reinstall several different systems with different Linux distributions. Once installed, I would then begin installing other packages and programs necessary for the system to fulfill its purpose. It was through these installations that I found one common factor between each distro I have installed. None of them come by default with the extremely popular C compiler, GCC.
The Gnu Compiler Collection (GCC) was first released in 1987, and has been one of the most popular C compilers ever written. Yet, when I try to install anything from source on a newly installed system, I run into “gcc is needed” or another similarly worded phrase that stops my installation dead in its tracks. It is extremely easy to remedy as you can find GCC in almost every distributions’ base repository, yet it seems to me to be an unnecessary step.
I decided to look into why something as popular and widespread as GCC was not included in the basic Linux package when I came across this thread about GCC from 2007, and the linked post especially. In it, Linus Torvalds, the father of Linux, effectively bashes GCC while stating that there is no real alternative to speak of. This helped me understand why it must be installed independently, the software engineers who work on the kernel don’t like it! I had been looking at it as a Linux user, instead of as a developer. When Linus states, “for the last five years or so, I’ve really wanted some other compiler team to come up with a good open-source compiler” it makes be believe that he does not want to include anything in the base package that he would like to see replaced.
When it comes to setting up a new Linux system, there are a lot of programs that are not installed by default to prevent bloating the initial system. One of the greatest strengths Linux has is the ability for the user to customize exactly what they want installed on the system, all the way down to the C compiler they choose. Once I was able to understand that, I realized that having GCC come pre-installed would actually be a hindrance to some developers.