For some technical projects, software packages like MATLAB or Mathematica fit the bill. Other times, it is necessary to write custom code in a language like C++ and compile it. The project usually becomes a mix of hand-coded parts and software libraries such as the GNU Scientific Library (GSL). These libraries must be installed on the system and incorporated.
Most desktop OS's (e.g., Ubuntu Linux) make libraries like the GSL available in pre-compiled form — getting the code running is generally straightforward. Running a project with library dependencies on older computer clusters can be trickier. The required libraries may be present but outdated, or missing entirely. Further, cluster users generally lack privileges to install software system-wide. In such cases, current versions of the needed libraries can always be installed in the user's home directory. The project's compiler is then told where to find them using command-line arguments (e.g., GCC's -I and -L flags).
GCC is a powerful piece of software (its man page is over 14,000 lines long!). It is the standard compiler for Linux operating systems and is often used in tandem with the build automation tool Make and other GNU offerings. Beyond its source-code-transforming capabilities, GCC has been at the center of the free software movement and has strongly influenced the evolution of our technology landscape.