{"id":11794,"date":"2024-03-14T14:46:57","date_gmt":"2024-03-14T14:46:57","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/"},"modified":"2025-08-04T17:11:21","modified_gmt":"2025-08-04T17:11:21","slug":"what-is-the-usage-of-a-makefile-in-linux","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/","title":{"rendered":"Makefile in Linux: Usage Explained"},"content":{"rendered":"<p>In Linux, a Makefile is a file that contains a series of targets and dependencies, used to instruct the make command on how to compile and build code. Typically, a Makefile includes the following:<\/p>\n<ol>\n<li>Define variables: it is possible to define some variables to store parameters needed during the compilation process, such as compiler name and compiler options.<\/li>\n<li>Definition rule: A rule consists of a target, a colon, and one or more dependencies. The target is the generated file, and the dependencies are the files or other targets needed to generate the target. The rule instructs the make command on how to generate the target file.<\/li>\n<li>Directive: Following the rules, one or more commands can be executed for the build process. These commands are typically compiler commands or copy commands.<\/li>\n<\/ol>\n<p>Example Makefile:<\/p>\n<pre class=\"post-pre\"><code>CC = gcc\r\nCFLAGS = -Wall\r\n\r\n<span class=\"hljs-section\">all: program<\/span>\r\n\r\n<span class=\"hljs-section\">program: main.o func.o<\/span>\r\n    <span class=\"hljs-variable\">$(CC)<\/span> <span class=\"hljs-variable\">$(CFLAGS)<\/span> -o program main.o func.o\r\n\r\n<span class=\"hljs-section\">main.o: main.c<\/span>\r\n    <span class=\"hljs-variable\">$(CC)<\/span> <span class=\"hljs-variable\">$(CFLAGS)<\/span> -c main.c\r\n\r\n<span class=\"hljs-section\">func.o: func.c<\/span>\r\n    <span class=\"hljs-variable\">$(CC)<\/span> <span class=\"hljs-variable\">$(CFLAGS)<\/span> -c func.c\r\n\r\n<span class=\"hljs-section\">clean:<\/span>\r\n    rm -f *.o program\r\n<\/code><\/pre>\n<p>The example Makefile above defines variables CC and CFLAGS, followed by three rules: all, program, and clean. The all rule sets the target as program, dependent on main.o and func.o, with the command to compile and link these two target files to generate the executable file program. The clean rule is used to remove the generated target files and executable file.<\/p>\n<p>To build a project using a Makefile, simply run the make command in the project directory. The make command will compile and build the code based on the rules and dependencies specified in the Makefile.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Linux, a Makefile is a file that contains a series of targets and dependencies, used to instruct the make command on how to compile and build code. Typically, a Makefile includes the following: Define variables: it is possible to define some variables to store parameters needed during the compilation process, such as compiler name [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[9689,2605,297,15317,2589],"class_list":["post-11794","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-build-automation","tag-compilation","tag-linux","tag-make-command","tag-makefile"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Makefile in Linux: Usage Explained - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Makefile in Linux: Usage Explained\" \/>\n<meta property=\"og:description\" content=\"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T14:46:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T17:11:21+00:00\" \/>\n<meta name=\"author\" content=\"Emily Johnson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emily Johnson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\"},\"author\":{\"name\":\"Emily Johnson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\"},\"headline\":\"Makefile in Linux: Usage Explained\",\"datePublished\":\"2024-03-14T14:46:57+00:00\",\"dateModified\":\"2025-08-04T17:11:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\"},\"wordCount\":235,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"build automation\",\"Compilation\",\"Linux\",\"make command\",\"makefile\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\",\"name\":\"Makefile in Linux: Usage Explained - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T14:46:57+00:00\",\"dateModified\":\"2025-08-04T17:11:21+00:00\",\"description\":\"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Makefile in Linux: Usage Explained\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378\",\"name\":\"Emily Johnson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g\",\"caption\":\"Emily Johnson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Makefile in Linux: Usage Explained - Blog - Silicon Cloud","description":"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/","og_locale":"en_US","og_type":"article","og_title":"Makefile in Linux: Usage Explained","og_description":"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T14:46:57+00:00","article_modified_time":"2025-08-04T17:11:21+00:00","author":"Emily Johnson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Emily Johnson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/"},"author":{"name":"Emily Johnson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378"},"headline":"Makefile in Linux: Usage Explained","datePublished":"2024-03-14T14:46:57+00:00","dateModified":"2025-08-04T17:11:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/"},"wordCount":235,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["build automation","Compilation","Linux","make command","makefile"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/","name":"Makefile in Linux: Usage Explained - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T14:46:57+00:00","dateModified":"2025-08-04T17:11:21+00:00","description":"Discover how Makefiles automate Linux code compilation using variables, rules, and dependencies. Essential build tool guide.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-a-makefile-in-linux\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Makefile in Linux: Usage Explained"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3b041b19cffc258705478ecfab895378","name":"Emily Johnson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a5cb4e73d02ab1d79f2dfe919389ff7c1de072baa97686392031c03d858cc358?s=96&d=mm&r=g","caption":"Emily Johnson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/emilyjohnson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=11794"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11794\/revisions"}],"predecessor-version":[{"id":155591,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11794\/revisions\/155591"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=11794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=11794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=11794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}