一、首先,看一下最简单的C文件
//hello.c文件
#include <stdio.h> void main()
{
printf("hello world\n");
}
为hello.c编写makefile文件,这里用gcc编译

$ vi Makefile

hello:hello.c
  gcc -o hello hello.c
从中可以看出,最简单的makefile文件只需要两行,我们分别来看
第1行:hello是要生成的文件,hello.c是编译需要的源文件,中间以:分隔
第2行:是具体的编译命令
二、我们还可以用gcc先把hello.c编译成机器语言,以.o结尾,最后再将各个文件进行链接生成二进制文件
   上面的makefile文件则可以写成这样:
hello:hello.o
gcc -o hello hello.o
hello.o:hello.c
gcc -c hello.c
从上面的代码中可以看出,最后编译的hello是由hello.o最后生成的
先看第3,4行:第3行,hello.c先编译生成hello.o,第4行,是生成hello.o具体的命令
再看第1,2行:第1行,二进制文件hello需要hello.o,第2行,是生成hello具体的命令
 
是不是很easy.
 
三、如果有多个文件需要进行链接,只需生成.o文件,最后链接生成最终文件
如:有file1.h,file1.c, file2.h, file2.c, main.c五个文件

makefile文件如下:

main:main.o file1.o file2.o
gcc -o main main.o file1.o file2.o
main.o:main.c file1.h file2.h
gcc -c main.c
file1.o:file1.h file1.c
gcc -c file1.c
file2.o:file2.h file2.c
gcc -c file2.c
从上面代码可以看出,需要先编译出file1.o,file2.o,main.o文件,最后链接生成最终的main文件,大功告成。
 
Attention: A tab is needed before the command  like `gcc -c main.c` or will be terrible!!

makefile文件制作入门的更多相关文章

  1. C语言Makefile文件制作

    本文摘抄自“跟我一起写Makefile ”,只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器. 原文请看这里:http://wiki.ubuntu.org.cn/%E8%B7% ...

  2. 第三课 Makefile文件的制作(上)

    1.序言: 前面的课程讲解了从gcc编译过程到其实践,大家可以看到其实在这些步骤中有些是可以简化编译的,但由于参数多以及项目中文件数量多的原因难免会造成错误甚至是浪费大量的时间在这编译上,为此linu ...

  3. Linux工具入门:make工具与Makefile文件

    1. make工具 利用make工具可以自动完成编译工作,这些工作包括: 如果修改了某几个源文件,则只重新编译这几个源文件 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件 利用这种自动编译 ...

  4. Linux平台Makefile文件的编写基础入门(课堂作业)

    根据老师的要求,写一个超简单的makefile准备:       准备三个文件:file1.c, file2.c, file2.h       file1.c: #include "file ...

  5. 第五课 Makefile文件的制作(补充)

    序言: 前面的几节课讲解Makefile的一些基本知识也做了一些小例子实践了几下,那么到现在普通的练习则是没有问题.但是如果做项目文件较多又分层次等等还是会碰上好多问题的,这节课补充一些知识. 知识点 ...

  6. 第四课 Makefile文件的制作(下)

    1序言: 前面一节课讲解了Makefile的基础知识包括原理.预定义以及命令格式,这样是可以完成一个自动编译的文件,这些知识可以帮你完成.想想mak真是强大啊,可能有些同志发现了如果项目文件太多每个目 ...

  7. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  8. Linux内核Makefile文件(翻译自内核手册)

    --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...

  9. 【Ecmall】ECMall2.x模板制作入门系列(认识ECMall模板)

    ECMall2.x模板制作入门系列之1(认识ECMall模板) 从ECMall2.0全新架构发布以来,随着版本的不断更新,ECMall已经逐渐走向一个稳定时期,是时候整理一些实用教程了.下面给大家带来 ...

随机推荐

  1. iOS 开发 上传代码至github(转)

    一.注册github账号   首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的githu ...

  2. Python中raw字符串与多行字符串

    如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦.为了避免这种情况,我们可以在字符串前面加个前缀r ,表示这是一个 raw 字符串,里面的字符就不需要转义了.例如: r'\(~_~ ...

  3. Web- HTML网页颜色大全

    按色相的搭配分类 列举一些最为代表常见的颜色值,让你能快速的找到自己想要的代码 红色 #FFFFCC#CCFFFF#FFCCCC #99CCCC#FFCC99#FFCCCC #FF9999#99669 ...

  4. 剑指OFFER之把数组排成最小的数(九度OJ1504)

    题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 输入: 输 ...

  5. 在iOS应用程序中打开设备设置界面及其中某指定的选项界面

    摘自:http://stackoverflow.com/questions/8246070/ios-launching-settings-restrictions-url-scheme [[UIApp ...

  6. cocos2d-x CCSpriteBatchNode

    转自:http://www.cnblogs.com/jiackyan/archive/2013/04/14/3019880.html 1.先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一 ...

  7. 博客转移到lyso.me

    博客转移到http://lyso.me :)

  8. Android 如何修改默认的searchable items。

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  9. 会话跟踪session cookie

    会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在 ...

  10. 迷你template

    JavaScript Micro-Templatinghttp://ejohn.org/blog/javascript-micro-templating/   //Simple JavaScript ...