How To Compiling C Program And Creating Executable File Under a Linux / UNIX / *BSD

How do I compile C program and create an executable file under Linux or UNIX operating systems?

You need GNU project C and C++ compiler for compiling C program and creating an executable file. Most Unix and Linux (*BSD) user start compiling their C program by the name cc. [donotprint]

Tutorial details
Difficulty Easy (rss)
Root privileges No
Requirements C compiler
Time 5m
[/donotprint]But you can use gcc command to compile program. First make sure you have gcc C compiler installed:

Make Sure Compiler Is Installed On a Unix-like System

Type the following which command or type command or command command to verify that gcc is installed:
$ type -a gcc
$ command -V gcc
$ which gcc

Sample outputs:


Find out version of gcc, run:
$ gcc --version
Sample outpust:

gcc (GCC) 4.0.3 20060212 (prerelease) (Debian 4.0.2-9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO


The syntax is as follows to compile a C program on a Unix-like operating system:
gcc program.c -o program-output
cc program.c -o program-output
make program

Writing Your First C Program Under a Linux / UNIX-like system

Use a text editor such as vi or gedit or nano to create a C program called first.c:
$ vi first.c
Type the following lines (program):

#include <stdio.h>
int main(void){
  printf("My first C program\n");
  return 0;

How Do I Compile My C Program?

To compile C program first.c, and create an executable file called first, enter:
$ gcc first.c -o first
$ cc first.c -o first
To execute program first, enter:
$ ./first

My first C program

However, both FreeBSD and Linux support direct make (GNU make utility to maintain groups of programs) command on C program without writing a make file. Remove, first program using the rm command:
$ rm first
$ make first


cc   first.o   -o first

Execute program first:
$ ./first
Please note that above hack works with GNU/make only.

See also:

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 79 comments so far... add one

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
79 comments… add one
  • Mps Mar 21, 2006 @ 19:43


    Your c code is missing the filename of the #include directive.

  • 🐧 nixcraft Mar 21, 2006 @ 22:50

    Thanks for heads up.

  • Edan Mar 8, 2007 @ 11:14

    Hi, I was just wondering how would you create an executable for numerous C programs? I am modifying the Windows Frotz interpreter for a college assignment with the aim to output the game data to a html page. The source for the interpreter contains numerous C files in a number of subdirectories. I have made the modifications but need to create the executable to see if it works properly. This is my first time creating an executable so i’m a bit unsure how to go about it. Any help would be greatly appreciated.

  • conrad sobol Jun 11, 2007 @ 10:04

    I just want to thank you. I am 57 years old and I just started computing two years ago. I have built three towers, which is no big deal; but, I have been running a lot of different systems. I want to learn c and c++ and you have helped me a lot. I am grateful for any help I can get. I usually do stuff on my own.I still wonder what the greatest difference is between BSD and Debian other than software installation. I do think that BSD is closer to being pure UNIX than Debian, but the kernels are so alike or an I wrong? It world be nice to know. Anyway, this letter is to thank you.

  • 🐧 nixCraft Jun 11, 2007 @ 17:42

    Nice to see at 57, you are learning BSD and C/C++ development.

    *BSD is under BSD vs Linux is under GPL License
    Network stack

    Little change in command syntax for few utilities

    A BSD and Linux kernel are different and follows different development methods and approach.

    Please see this post along with discussion for more info.

  • haneefa Jun 22, 2007 @ 10:26

    i want a C program Compiler Code In VI editor

  • king777 Jan 22, 2008 @ 17:51

    hi, i ve installed red hat linux.and trying to compile C++ prg.but getting a err msg saying that gcc not found.then i tried to see which compiler installed on my linx.To do so i am giving cmd – which
    gcc – output is /usr/bin/which: – no gcc.

    and i am not able to compile my prog..

    plz help me in dis regard.

    • EdsonP(nenao) Nov 19, 2011 @ 13:09

      You need to install install update your repositories, and install it thru the RPM comander or do it with de packgesmanager.


    • gaurav Mar 27, 2012 @ 13:55

      install g++ . in redhat and centos or fedora yum install g++

  • anonymous Oct 10, 2008 @ 17:21

    king777 – you need to make sure the gcc development package is selected when you install redhat. Otherwise, you have to download/install gcc manually.

  • liju Feb 21, 2009 @ 4:16

    i don’t know about software creation iam from a village school of india
    shall you pls send any program in c for me iam too interest in these

  • Zashk Mar 29, 2009 @ 12:30

    If using the Unix system

    Follow the below steps:
    $ vi welcome.c
    Save the content written below (This is called programme)

    int main(void)
    printf(“WELCOME TO THE WORLD OF C\n”);
    return 0;

    Step 3 ) comiple the progamme
    gcc welcome.c -o WELCOME

    Step 4) For execution
    $ ./WELCOME

    • diptesh maity Jan 31, 2012 @ 10:29

      good answer………………

  • DarkBattM14 May 26, 2009 @ 5:14

    THNX!!! very useful!!!! :D :D :D

  • Omar Aug 24, 2009 @ 7:16

    After typing the following command “$ which gcc” to verify that gcc is installed, the Output was “/usr/bin/which: no gcc in (/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/omar/bin)
    ” , instead of being “/usr/bin/gcc”. what i have to do now?

  • mominmyheart Dec 2, 2009 @ 15:35

    I would like to thank you very much. I am new user of linux and C language, I was trying to compile a small program for hours. You made it so easy thank you again and god bless you.

  • tom_g Dec 26, 2009 @ 20:01

    Many thanks for this! I love programming in C and perl and getting my feet wet with Linux/UNIX.

    As a followup question, how would I take a program I’ve created (a calculator, for example), and package it so it can run as an executable on another computer (or even embed in a linux distro)?

    Thanks again.

  • solomon komba Feb 3, 2010 @ 11:52

    i want to know how to create executable file.

    • badshah Nov 13, 2010 @ 19:05

      when u compile any *.c file automatically the executable file is created, which is linked to ld further to get the output,the executable file created after compiling is called as intermediate object file or executable

      • EdsonP(nenao) Nov 19, 2011 @ 13:13

        I file con be executable thru the permitions
        chmod +x program make in a sudo way


  • nits gup Feb 20, 2010 @ 12:05

    how to compile a user defined function in c using gcc.
    what do you mean by segmentation fault.

  • Mojtaba_Sky Apr 13, 2010 @ 17:38

    i’m new linux worker.
    befor linux i work on windows7 and now for robotic programing and… work in linux fedora12.
    thank u for this note.
    and i have a question!(excuse me for my bad english,becous i’m iranian)
    –> how we can load and open the serial port in program??
    –>how can i open the camera on linux?
    –>and how we can comunicate with other laptop with wi-fi?

    so thank a lot.

  • Jhuma Basu Apr 15, 2010 @ 13:08

    I followed the steps mentioned above.I m able to compile the code.But when i m givin “./first” to
    run it its giving the following “-bash: ./first: Permission denied”. Please help me

    • MeierSom Oct 26, 2012 @ 8:03

      Usually the compiled programm. If that’s not the case run
      sudo chmod u+x
      which gives the user permission to execute the file.

  • cool18 May 17, 2010 @ 15:45

    hii…iam on redhat 5.0….whenever i try to compile c program…iam gettin an error msg stating gcc command not found….explain me the easy way to install the gcc….please help me

  • cool18 May 18, 2010 @ 3:37

    i tried which gcc as you said but iam getting gcc not in and ./a.out is also not working…please someone help me out

  • Gagan Aug 6, 2010 @ 2:11

    HI! I’m new for linux and I’m using Fedora 13 actually I wnt to install compiler for c and c++ someone told me gcc is inbuilt in fedora 13, is it possible tell me how to know it’s installed or not or how to install it? how to create c or c++ programs in fedora 13 or any linux system, how to install other IDE’s for development. Please someone help me out……

  • Anjan Aug 20, 2010 @ 4:53


    I would like to know how can I execute the file “first” without using preceeding it
    with the characters “./” . Any help is appreciated.


  • Manoj Aug 21, 2010 @ 0:30

    when i try to compile a C pogram in centos 5.2…i get the following error
    $ cc prog.c
    bash: cc: command not found

    how to get rid of this prob…pls help

    • sagar sukumar Aug 31, 2010 @ 3:52

      actually it is because gcc is not installed so type “yum install gcc” if u have a centos or fedora

      • Sep 1, 2010 @ 6:25

        i tried it as su -c’yum install gcc’
        but it also get install the gcc so hw could i hv 2 go for install.

        • amit Nov 10, 2010 @ 9:14

          yum only works if you have a yum repository… otherwise you have to do it manually..

  • Prabin kumar tripathi Aug 29, 2010 @ 13:51

    when i try to compile a C pogram in Fedora 13 .i get the following error
    $ cc prog.c
    bash: cc: command not found
    how to get rid of this prob…pls help

    • Koushik Khan Aug 19, 2011 @ 7:32

      Dear friend,
      I cannot also create,compile & execute C program in Fedora 15.Please help me to do this mailing me the required commands.

  • noton Sep 4, 2010 @ 3:36

    I can’t not compile program

  • PsykoNerd Sep 18, 2010 @ 13:48

    TopDollar !! :)
    My first c-compilation yummie!
    And it works perfect following your instructions.
    Peace out!

  • pradeep Nov 19, 2010 @ 10:20

    hi friends can any one say me how can i add libraries(.h) to my gcc compiler

  • LostInCyberspace Jan 15, 2011 @ 4:10

    This really doesn’t help me to understand how to make the compiled program executable. When I say executable I mean a *.exe file that I can call by name (such as typing “first_program.exe” in a terminal & having it execute), or by double clicking in a graphical environment.

    Does ANYBODY know how to do THAT?!

  • Max Feb 4, 2011 @ 16:14

    Can I use script on Windows XP??

    • Tomahawk2001913 Jun 14, 2013 @ 2:58

      If we have a program with multible *.c or *.h files how do we compile those together? And how do we make this a *.exe file or some sort of exacutable?

  • raaz Feb 15, 2011 @ 18:15

    i just want to know how to install gcc files in fedora???????????/

  • Aamir Adnan Rind Feb 17, 2011 @ 13:08

    use the following command in terminal (it works for me in fedora 14)
    yum groupinstall ‘Development Tools’

    This will download (approx 105Mb) of data and automatically install it on your system. the best thing is you dont have to worry about the dependencies ;-)
    then type gcc and press enter
    you should get this error “no input files selected” this means gcc is installed.

    • Nivi Mar 13, 2011 @ 9:16

      i tried but it says that you need to be root to perform this command. now what should i do?

  • ramya Apr 26, 2011 @ 9:25

    thanks you

  • Mostafa Hoseinimehr Jun 3, 2011 @ 21:31

    in Ubuntu installed gcc by default.
    thanks a lot for this.

  • balu Jun 27, 2011 @ 5:21

    i want how to understand linux progams.

  • meenakshi sharma Jul 3, 2011 @ 1:48

    sir ,
    I want to know is c has executable files?if yes then can a virus infect c?

  • meenakshi sharma Jul 3, 2011 @ 1:51

    There is a problem when i write a command in MS-Word like
    then some text appears.I m not able to understand the internal working for this command.Can you explain please?

  • kaleeswari Aug 16, 2011 @ 11:12

    I want to execute the shell program in ubunto os . but, the vi editor didnot support the delete operation . how to delete the mistake lines in vi editor .

  • sahil Aug 17, 2011 @ 13:48

    i want to know that

    if i made my own header file…………then where to place that header file to use it.

    or there is any change in compiling the file.

  • aaa Aug 26, 2011 @ 2:57

    when I try compile a C program and create an executable file , I fail and get this massage : Access is denied .
    I do not know what does mean
    I want help

  • Arman Sep 23, 2011 @ 18:24

    Hi, Thanks a lot

  • arif Nov 5, 2011 @ 18:25

    write a c under the unix/linux environment to do the following:create two concurrent processes A and B, with a shared memory segment M attached to the address spaces of those two processes,process A generates 100 pseudo-random integer numbers, and stores them in M,process B sorts the numbers in M by any sorting algorithm,process a displays the sorted list in M.

  • EdsonP(nenao) Nov 19, 2011 @ 13:04

    Nice !!! very clear, thanks…

    I love LINUX>> yahhhhhhhh

  • Baba Saleem Nov 24, 2011 @ 7:26

    Lots of thanks to people who have provided solution for professionals.
    I love Ubuntu 10.04 LTS.
    Everything Amazing and easy.

  • saurabh May 21, 2012 @ 13:48

    i use ubuntu 11.10 and why it is not working
    sumit@saurabh:~$ gcc –version
    gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
    Copyright (C) 2011 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO

    sumit@saurabh:~$ $ vi first.c
    $: command not found
    sumit@saurabh:~$ gedit first.c
    sumit@saurabh:~$ $ gcc first.c -o first
    $: command not found
    sumit@saurabh:~$ $ cc first.c -o first
    $: command not found
    sumit@saurabh:~$ $ gcc first.c -o first
    $: command not found

  • Mayank Jul 1, 2012 @ 12:47

    @ saurabh…
    Bro…u must remove the ‘$’ sign before the commands.
    instead of $ vi first.c it shud be vi fisrt.c
    and same for rest of commands.
    shud work…else do below
    whereis gcc
    It will give u path of gcc executable like /usr/bin/gcc
    then try as below:
    /usr/bin/gcc first.c -o first
    this wud work..

    • saurabh Aug 10, 2012 @ 15:59

      thanks…Mayank bhai

  • neha Aug 6, 2012 @ 9:29

    your ans are really very helpfull thanx

  • Anil Sharma Sep 1, 2012 @ 7:52

    Hii ,
    I am trying to run the same C program as mentioned at the top of this page. But it is saying that commant not found or directory no found. Can you please help me in this.

    Thanks and Regards,

  • abdulla ragif ali mohammed mustafa karim achmed Sep 1, 2012 @ 20:41

    goodhoallo i are to write in terminel but no working for avover the coder. plis help me i is not geting work fix to be……..,,,mngrw


  • pesho Sep 9, 2012 @ 8:51

    i dont get why u guys goes thru all that pain with linux :D
    i can do all this for 200 % faster then any of u on my windows
    threat closed !

  • Taufique Oct 14, 2012 @ 20:08

    hey,Anil sharma!
    first of all ,where have you saved *.c file,keep in mind this location.Next, open your terminal(ctrl+t) and type cd location and press enter.Now compile your c file using this command line gcc filename.c .Now a.out file will create where you have saved filename.c file.For run this filename.c type ./a.out in the terminal and this will give you output of your filename.c file.

  • kanchan Oct 15, 2012 @ 6:32

    i’m a newbie to linux,kindly help me complile this c++ code.I got this error while trin to compile the same.

    root@ubuntu:/home/kanchan# gcc -o codel fatal error: config.h: No such file or directory
    compilation terminated.

  • Amir Feb 5, 2013 @ 20:59


  • Tanvi Mar 5, 2013 @ 18:31

    M using red hat linux nd it contain a gcc but der is advance version of gcc…………..
    i cant compile a c code y????????

  • Tanvi Mar 5, 2013 @ 18:33

    Reply me as early as u guies psble…….

  • Mia Sanders Oct 18, 2013 @ 13:16

    Hi , I’m not an expert or anything like that, but I need to compile a program from an existing script.. I have none around to help me. If I type what you said:

    gcc script.c -o script

    I get:
    12:22 fatal error: plataform.h: No such file or directory
    compilation terminated

    What does that means?

    Thanks in advance.


  • kwadwo Jan 19, 2014 @ 4:15

    I took some of your code for bash c compile and run and I lift my head of the table. You are genius

  • Ganesh Feb 12, 2015 @ 6:01

    How do i give input to c program through php code????

    • Ganesh Feb 12, 2015 @ 6:03

      like this code:

      void main()
      int i;

  • ibrahim Sa'ad May 8, 2015 @ 6:27

    I have a c program, how can I compile and run it

  • leela Sep 9, 2015 @ 17:00

    i have a c program in programs folder which is in d drive,but i need to generate .exe file in same source folder,How can i generate?even i set path for c but, i need to acess program from d drive how?
    can anyone know the answer

  • owusu kelvin Sep 25, 2015 @ 18:12

    Please I need the steps to compile my c program

  • Javed Akhter Dec 16, 2015 @ 1:06

    I have question.
    1) The source code of a C program file is stored in a file with the ____ extension.

    2)____ is an example of how you can declare a string in C.

    Please can you send me Answer.

  • M.BABYSATHYA. Mar 1, 2016 @ 7:22

    give example prg in linux using c prg and how run

  • Chris Nov 24, 2016 @ 18:44

    This was amazing! Thanks!

  • Dave B Jan 19, 2017 @ 21:52

    In the tutorial example :-

    $ make first

    The output to screen is actually…
    cc first.c -o first

    Note the .c not .o as shown in the tutorial.

    Otherwise works as advertised! ;-)

    Ta Ta.

  • thakvika Apr 26, 2017 @ 1:50

    How can i just click my app and run rather than goto command and type ./myapp?

Leave a Reply

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

Use HTML <pre>...</pre> for code samples. Problem posting comment? Email me @