Install C, C++ Compiler and Development (build-essential) Tools in Debian/Ubuntu

Most Linux system administrators and engineers are required to know some basic programming to help them in their daily tasks. If they want to go one step further into the development area as well (either as kernel or application programmers), then C or C++ is the best place to start.

Install C, C++ Compiler and Build Essential Tools

Install C, C++ Compiler and Build Essential Tools

Read Also: Install C, C++ and Development Tools in RHEL/CentOS/Fedora

In this article we will explain how to install C and C++ compilers and it’s Development Tools (build-essential) related packages such as make, libc-dev, dpkg-dev, etc. in Debian and derivatives such as Ubuntu and Linux Mint.

The build-essential software contains an informational list of software’s which are treated as important for building Debian packages including gcc compiler, make and other needed tools.

​What is a Compiler?

Simply put, a compiler is a software program that processes instructions written in a programming language and creates a binary file that the machine’s CPU can understand and execute.

In Debian-based distributions, the most well-known C and C++ compilers are gcc and g++, respectively. Both programs were developed and are still maintained by the Free Software Foundation through the GNU project.

​Installing C, C++ Compiler and Development Tools (build-essential)

If your system don’t have build-essential package installed in your system by default, you can install the latest available version from the default distribution repositories as follows:

# apt-get update && apt-get install build-essential     
$ sudo get update && apt-get install build-essential

Now we’re ready to start typing C or C++ code… or almost. We’re about to show you yet another tool to boost your development toolset.

Speeding Up C and C++ Compilations

When you know you’ll need to compile a program, make changes, then recompile again it’s great to have a tool like ccache, which as you will probably guess based on its name, is a compiler cache.

It 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++. The only limitations are:

  1. Only supports caching the compilation of a single C/C++/Objective-C/Objective-C++ file. For other types of compilations (multi-file compilation, linking, to name a few examples), the process will end up running the real compiler.
  2. Some compiler flags may not supported. If such a flag is detected, ccache will silently fall back to running the real compiler.

Let’s install this tool:

# aptitude install ccache
Install CCache in Debian

Install CCache in Debian

In the next section we will see some examples of C and C++ code compilation with and without ccache.

Testing C and C++ with a sample Program

Let’s use the classical example of a very basic C program that adds two numbers. Open your favorite text editor and enter the following code, then save as sum.c:

int main()
   int a, b, c;
   printf("Enter two numbers to add, separated by a space: ");
   c = a + b;
   printf("The sum of equals %d\n",c);
   return 0;

To compile the above code into an executable named sum in the current working directory use the -o switch with gcc:

# gcc sum.c -o sum

If you want to take advantage of ccache, just prepend the above command with ccache, as follows:

# ccache gcc sum.c -o sum

Then run the binary:

# ./sum
Compile C++ Program in Debian

Compile C++ Program in Debian

While this basic example does not allow us to see the full power of ccache, for larger programs you’ll quickly realize what a great tool it is. The same applies for C++ programs as well.


In this guide we have shown how to install and use the GNU compilers for C and C++ in Debian and derivatives. In addition, we explained 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, don’t hesitate to drop us a note using the form below If you have any questions or comments.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Gabriel Cánepa

Gabriel Cánepa is a GNU/Linux sysadmin and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide
The Complete Linux System Administrator Bundle
Become an Ethical Hacker Bonus Bundle

You may also like...

2 Responses

  1. Rodrigo says:

    you know let me know because the terminal is returning me the following error at compile time:

    gcc: error: sum .: File or directory not found
    gcc: Fatal error: the input files
    compilation terminated.

Got something to say? Join the discussion.

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.