HowTo: Compile And Run a C/C++ Code In Linux

Posted on in Categories , , , , , last updated January 8, 2016

I am a new Linux user and student who used to write C or C++ programs on MS-Windows. Now, I am using Ubuntu Linux. How can I compile a C or C++ program on Linux operating systems using bash Terminal application?

To compile a C or C++ program on any Linux distro such as Ubuntu, Red Hat, Fedora, Debian and other Linux distro you need to install:

  1. GNU C and C++ compiler collection
  2. Development tools
  3. Development libraries
  4. IDE or text editor to write programs

Step #1: Install C/C++ compiler and related tools

If you are using Fedora, Red Hat, CentOS, or Scientific Linux, use the following yum command to install GNU c/c++ compiler:
# yum groupinstall 'Development Tools'
If you are using Debian or Ubuntu Linux, type the following apt-get command to install GNU c/c++ compiler:
$ sudo apt-get update
$ sudo apt-get install build-essential manpages-dev

Step #2: Verify installation

Type the following command to display the version number and location of the compiler on Linux:
$ whereis gcc
$ which gcc
$ gcc --version

Sample outputs:

Fig. 01: GNU C/C++ compilers on Linux
Fig. 01: GNU C/C++ compilers on Linux

How to Compile and Run C/C++ program on Linux

Create a file called demo.c using a text editor such as vi, emacs or joe:

#include<stdio.h>
/* demo.c:  My first C program on a Linux */
int main(void)
{
 printf("Hello! This is a test prgoram.\n");
 return 0;
}

How do I compile the program on Linux?

Use any one of the following syntax to compile the program called demo.c:

cc program-source-code.c -o executable-file-name

OR

gcc program-source-code.c -o executable-file-name

OR

## assuming that executable-file-name.c exists ##
make executable-file-name

In this example, compile demo.c, enter:

cc     demo.c   -o demo

OR

## assuming demo.c exists in the current directory ##
make demo

If there is no error in your code or C program then the compiler will successfully create an executable file called demo in the current directory, otherwise you need fix the code. To verify this, type:
$ ls -l demo*

How do I run or execute the program called demo on Linux?

Simply type the the program name:
$ ./demo
OR
$ /path/to/demo
Samples session:

Animated gif 01: Compile and run C and C++ program demo
Animated gif 01: Compile and run C and C++ program demo

Compiling and running a simple C++ program

Create a program called demo2.C as follows:

#include "iostream"
// demo2.C - Sample C++ prgoram 
int main(void) 
{
    std::cout << "Hello! This is a C++ program.\n";
    return 0;
}

To compile this program, enter:

g++ demo2.C -o demo2
## or use the following syntax ##
make demo2

To run this program, type:

./demo2

How do I generate symbolic information for gdb and warning messages?

The syntax is as follows C compiler:
cc -g -Wall input.c -o executable
The syntax is as follows C++ compiler:
g++ -g -Wall input.C -o executable

How do I generate optimized code on a Linux machine?

The syntax is as follows C compiler:
cc -O input.c -o executable
The syntax is as follows C++ compiler:
g++ -O -Wall input.C -o executable

How do I compile a C program that uses math functions?

The syntax is as follows when need pass the -lm option with gcc to link with the math libraries:
cc myth1.c -o executable -lm

How do I compile a C++ program that uses Xlib graphics functions?

The syntax is as follows when need pass the -lX11 option with gcc to link with the Xlib libraries:
g++ fireworks.C -o executable -lX11

How do I compile a program with multiple source files?

The syntax is as follows if the source code is in several files (such as light.c, sky.c, fireworks.c):
cc light.c sky.c fireworks.c -o executable
C++ syntax is as follows if the source code is in several files:
g++ ac.C bc.C file3.C -o my-program-name

See gcc(1) for more information.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

37 comment

  1. Another mistake, please change the following comment:
    ## assuming that executable-file-name.c exists ##
    to
    ## assuming that program-source-code.c exists in the current directory ##

    1. For the sake of supplying an example, let’s say you want to use the cosine function. This is supplied in the Linux math library. The cosine function is called ‘cos()’. Similarly, the sine function is called ‘sin()’.

      First, to find information about how to use them, type “man cos” in a terminal session. This gives you the manual page for the cosine function. The output from ‘man’ may vary for your system, but it likely tells you three things: 1. first, include the math.h header, 2. cos() takes a ‘double’ as its argument and it returns a double as its output, 3. to build your program, tell the C compiler to include the math library (-lm).

      Here’s a sample program that does all of this:

      #include <stdio.h>   /* provides printf() */
      #include <math.h>  /* provides cos() */
      /* cosine.c: A sample C program on Linux that calls the cosine function. */
      /*   use "cc cosine.c -o cosine.c -lm"   */
      int main( void )
      {
        printf( "Hello! This program calls the linux cosine function." );
        double intput = 0;
        double output = cos( 0 );  /* get the cosine of zero */
        printf( "The cosine of %f is %f\n", input, output );
        return 0;
      }
      
  2. to compile and run a c++ program in ubuntu follow these simple steps:
    1 open terminal window.
    2 type “gedit” .
    3 A gedit window will appear whereyou can write your program.
    4 save your program as “filename.cpp” on desktop, “.cpp” is compulsory.
    5 open terminal again and type “cd Desktop”.
    6 In second line type “g++ filename.cpp”.
    7 Type “./a.out”.
    NOW YOUR WILL RUN.

  3. # yum groupinstall ‘Development Tools’
    im using these command but not install the gcc ….
    [[email protected] ~]$
    [[email protected] ~]$ # yum groupinstall ‘Development Tools’
    [[email protected] ~]$

  4. Hello Everyone,
    I am Learning C++ in Linux and I am Getting an ERROR for the command or To compile this program as follow:
    # g++ demo2.c -o demo2
    demo2.c:3: error: expected unqualified-id before â/â token

    Please give Solution for this.
    Thanks in Advance

    1. You need to look carefully at the contents of your file “demo2.c”. From the error message you provided, it looks like there is something wrong on line 3 or otherwise near line 3. Look for this “â/â” charactger and remove it. Then retry the g++ command. Good luck to you!

  5. I have created a c program in which i have to display the contents of file but each time when i run the program it display the error that file can’t be opened the no such file exits.
    i don’t know how to give the path of that text file in my c program i have to run this program on linux. please someone help me as soon as possible.
    Regards

  6. Thank you very much for this page Cyberciti’s team
    My age is above 30 and i work a waiter .I learned very thing about computer from the INTERNET. I started using Linux from 2013 and this is the only website i found tutorials of g++ explained from the basics .

  7. i did the same for c program
    steps upto gcc progname.c -o prgnam work fine
    but when i type ./executablefilename error with Bsh: ./hello permission denied appears.
    i am not getting why is this happening.
    I installed ubuntu alongside Windows two days ago and using ubuntu for programming for the first time.

Leave a Comment