How To Compile And Run a C/C++ Code In Linux

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:
[donotprint]
Tutorial details
Difficulty Easy (rss)
Root privileges No
Requirements GNU C/C++ compiler
Time 10m
[/donotprint]

  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

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

Compiling and running a simple C++ program

Create a program called demo2.C as follows:

#include "iostream"
// demo2.C - Sample C++ program 
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) Linux and Unix man page for more information.

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
38 comments… add one
  • Md.Ibrahim Aug 4, 2015 @ 8:19

    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

    • coder Jan 12, 2016 @ 18:04

      You have a syntax error on line 3 of your file: demo2.c
      Make sure you have typed it in correctly.

    • GK Jan 13, 2016 @ 2:26

      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!

  • Dileep Aug 7, 2015 @ 10:54

    Thanking you, awesome information

  • Sprite Aug 26, 2015 @ 5:41

    Very useful tutorial, thanks!

  • Midi Sep 23, 2015 @ 17:05

    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

  • shelli Oct 3, 2015 @ 18:36

    thank you

  • don bosco Jan 8, 2016 @ 11:09

    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 .

  • khush Mar 21, 2016 @ 8:23

    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.

  • sumit panwar Jul 10, 2016 @ 10:12

    thanks, this use full for me ……………..

  • sumit panwar Jul 10, 2016 @ 10:16

    what is diffrince b/w window and linux related to c .,, like if we creat a program in turbo c ,like if stetment.. are some deffrence to between both li & win////

  • ChainaT Oct 11, 2016 @ 4:25

    Thank you so much. I have been tryin to find the place to understand how to compile C++ file in Linux. Yours is the descriptive yet easy to read and follow. Thank so much!!!

  • ADHI P Nov 7, 2016 @ 2:54

    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

  • Tommy Nov 9, 2016 @ 2:28

    when i want to display the output. it prints the printf content, but when i use scanner, i dont get an option to input data. Help??

  • RAJDEO JHA Sep 22, 2020 @ 13:26

    there are data base in binary system is file,
    the c processing to work a application a file,
    there are application to placement value a
    prework value application to place
    sub+ calculus= Inter/value*work/pkace( equation 1)
    =|state \vertical
    =|statev3/value*work/place
    =|state v3*unit
    even number=operator/operation (equation2)

Leave a Reply

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

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.