Nowadays, as a system administrator or engineer, you can’t feel satisfied by knowing how to use the CLI and troubleshoot GNU/Linux servers but will need to go one step further into the development area as well to stay at the top of your game. If you’re considering a career in kernel development or applications for Linux, then C or C++ is the best place to start.
In this article, we will explain how to install GNU C and C++ compilers and their related Development Tools such as automake, autoconf, flex, bison, etc. in RHEL-based distributions.
What is a Compiler?
In simple words, a compiler is a software program that transforms statements written in a source language into a target language that the machine’s CPU can understand and execute.
In Fedora and derivatives (actually, that is true for the entire Linux distro ecosystem as well), the most well-known C and C++ compilers are gcc and g++, respectively, both developed and supported actively by the Free Software Foundation as part of the GNU project.
Installing GCC (C++ Compiler and Development Tools
If gcc and/or g++ and its related Development Tools are not installed in your system by default, you can install the latest available from the repositories as follows:
yum groupinstall 'Development Tools' OR dnf groupinstall 'Development Tools'
Before we dive into writing C or C++ code, there’s another tool to boost your development toolset that we want to show you.
Speeding up C and C++ Compilations in Linux
When you as part of the development process, have to recompile several times after making changes to the source code it’s great to have a compiler cache to speed up future recompilations.
In Linux, there’s a utility called ccache, which speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again. Besides C and C++, it also supports Objective-C and Objective-C++.
Ccache has only a few limitations: it’s only useful while recompiling a single file. For other types of compilations, the process will end up running the actual compiler. The same thing happens if a compiler flag is not supported. The bright side is that in any event it will not interfere with the actual compilation and will not throw an error – just fall back to the actual compiler.
Let’s install the ccache tool:
yum install ccache OR dnf install ccache
and see how it works with an example.
Testing GNU C Compiler with a Simple C++ Program
As an example, let’s use a simple C++ program that calculates the area of a rectangle after its length and width have been provided as inputs.
Open your favorite text editor and enter the following code, then save it as area.cpp
:
#include <iostream> using namespace std; int main() { float length, width, area; cout << "Enter the length of the rectangle: "; cin >> length; cout << "Now enter the width: "; cin >> width; area = length*width; cout <<"The area of the rectangle is: "<< area << endl; return 0; }
To compile the above code into an executable named area in the current working directory use the -o
switch with g++:
g++ area.cpp -o area
If you want to take advantage of ccache, just prepend the above command with ccache, as follows:
ccache g++ area.cpp -o area
Then run the binary:
./area
Sample Output:
Enter the length of the rectangle: 2.5 Now enter the width: 3.7 The area of the rectangle is: 9.25
Don’t let this simple example make you think that ccache is not useful. You will come to know what a great tool ccache is when recompiling a large source code file. The same principle applies to C programs as well.
Summary
In this article, we have explained how to install and use the GNU compilers for C and C++ in RedHat-based distributions.
In addition, we showed how to use a compiler cache to speed up recompilations of the same code. While you can refer to the online man pages for gcc and g++ for further options and examples, we look forward to hearing from you if you have any questions or comments.