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

Compile C++ Code in Linux

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.

Similar Posts