How To Run A Makefile

How To Articles

Running a Makefile can be a really useful skill for any programmer. It’s a powerful tool for automating the build process of your project, and it can save you a lot of time and effort. In this article, I’ll take you through the process of running a Makefile, sharing some personal insights and tips along the way.

Understanding the Makefile

Before we dive into running a Makefile, it’s important to understand what it is. A Makefile is a simple way to organize code compilation. It consists of rules that define how the source code should be compiled and linked to create the executable. The Makefile also keeps track of dependencies, so it only rebuilds parts of the project that have changed.

Creating a Simple Makefile

First things first, you need a Makefile. Let’s create a simple one for a C program. Here’s an example:

all: myprogram

myprogram: main.o function1.o function2.o
gcc -o myprogram main.o function1.o function2.o

main.o: main.c
gcc -c main.c

function1.o: function1.c
gcc -c function1.c

function2.o: function2.c
gcc -c function2.c

This Makefile consists of a few rules. The first rule is named ‘all’, and it depends on ‘myprogram’. The ‘myprogram’ rule specifies the commands to link the object files into the executable. The subsequent rules specify how to compile each source file into object files.

Running the Makefile

Now that we have our Makefile in place, let’s actually run it. Open your terminal and navigate to the directory containing your Makefile and source code. Then simply type:


This command tells the ‘make’ tool to read the Makefile and execute the necessary commands to build the project. If all goes well, you’ll see the executable created in your directory. And if you make changes to your source code and run ‘make’ again, it will only recompile the files that have changed, saving you time and effort.

Personal Tips

From my experience, it’s important to name your rules and dependency files in a way that makes sense to you. This will help you understand and maintain the Makefile in the long run. Additionally, always remember to include proper dependencies for each target so that changes in one file trigger the necessary recompilations.


Running a Makefile is a valuable skill for any developer. It can streamline your build process and save you from the hassle of manual compilation. By understanding the Makefile structure and using it effectively, you can significantly improve your development workflow.