如何写简单的Makefile

原创 2015年07月11日 10:33:20

对于Makefile的重要性大家应该都有所了解,这有一篇对Makefile的讲解非常好的文章,链接如下:http://blog.csdn.net/ruglcc/article/details/7814546/

所以本篇文件就没必要再写类似的了,即使写了也没链接里面原创作者写的好,所以这里我简单的介绍在一般的开发过程中怎么写一些简单的Makefile,帮一些不是太了解的童鞋对Makefile有个初步的认识。

附图

 

                                                                        图1-1

图1-1所示的列子是一个简单的将当期目录下应用程序编译为对应的可执行文件。此列程稍加修改可以编译库文件,只要你明白了,都好操作。

现在说下上述列子中的执行动作含义以及一些自动化变量,函数意思。

1:CROSS_COMPILE,CC,STRIP,这些我想大家都应该知道指定对应的工具链及对生成文件的简化动作。

2:ARFLAGS这个参数是用在生成共享库操作中的,此处只是做个保留。

3:INC表示编译程序时候文件依赖头文件路径,以-I参数来表示,如果有多个include,我们可以用INC+=,这种追加的方式在下        一行添加,这样比直接把所有依赖头文件放在一行,看上去简洁。

4:DLIBS,依赖库名称。这个名称随便写,不过写出来的要能正确表达意思。这里的-ltest表示依赖裤的名称,写成-ltest,依赖库大概类似libtest.so这样。我们平时看到的-lpthread,-lm这些都是一样的道理,指定编译器找指定的裤名称。

5:LDFLAGS=-L./lib,用来告诉Makefile在工作过程中去当期的lib目录下去查询所依赖的裤,一般用-L来表示此操作。

6:RPATH,如果在编译的过程中ld不是直接被调用的,而是通过gcc来包含了ld的动作,那么就要加上-W1选项。另外说下rpath和rpaht-link的区别,

rpath指定的路径包含在可执行文件elf中,运行的时候调用。rpath-link只在链接时使用,用在本地链接器,所以大家在使用过程中注意了。

7:filter,patsubst。这些都是Makefile函数,详细的具体说明都在前面的Makefile详解链接里面。

      filter函数在此处的意思是过滤$(DIR_SRC_FILE)中文件,只要后缀为.c的文件。

      patsubst,模式字符串替换函数。格式如此,$(patsubst <pattern>,<replacement>,<text> )查找<test>中的单词,如果符合模式<pattern>,则用

      <replacement>模式替换。

8:现在剩下的说明下常用的自动变量。

   $@:表示一个规则中的目标文件名。

   $%:当规则的目标文件是一个静态库文件时,此代表静态库的一个成员名。

   $<:规则中的第一个依赖文件。

   $>:表示库名,和$%一样适合库文件。

   $?:所有比目标文件新的依赖文件列表,以空格分隔。

   $^:规则的所有依赖文件列表,用空格分开。

   $+:类似“$^”,不过保留了依赖文件中重复出现的文件。

   $*:其值是目标文件去掉后缀后的名称。


对于Makefile的大致介绍就完毕了,基本上大家在写小型的项目的过程中上述所述可以帮你搞定,由于本文只是做个大致介绍,如果想要升入了解,读者自己学习即可。






版权声明:本文为博主原创文章,未经博主允许不得转载。

如何写简单的makefile

作为一个服务端的程序员,在linux下不会写makefile那就就不能算服务端程序了。最近在重新学C/C++,写了一个简单的双向链表,到写makefile的时候卡住了,太久没写,都忘记了,赶紧上网查了...
  • jack2912
  • jack2912
  • 2016年03月19日 22:43
  • 228

一个最简单的Makefile例子

原文地址:http://hi.baidu.com/hellosim/blog/item/42e78341b40c3e8db2b7dce3.html 转载请注明出处 1.hello.c #in...
  • u013713010
  • u013713010
  • 2015年05月25日 10:10
  • 3545

简单而又完整的makefile

刚开始学习makefile是一个痛苦的过程,从杂乱无章的规则到一个简单的makefile再到一个系统化的makefile不是一蹴而就的事情。今天我就写一个简单的,规范的(相对而言),功能也算齐全的Ma...
  • tody_guo
  • tody_guo
  • 2010年04月12日 13:06
  • 3388

自己写一个简单通用的Makefile

一.makefile的作用           Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefil...
  • u011913612
  • u011913612
  • 2016年08月03日 12:55
  • 1529

从简单实例开始,学会写Makefile(一)

作为一个刚刚从大学囚笼里走出的新人,进公司不久就遇到了一个不大不小的门槛——看不懂Makefile!虽然还不至于影响到项目进度,从别的地方拷贝一份过来稍加修改就可以用了,但是,对于咱们“程序猿”来说这...
  • wcl199274
  • wcl199274
  • 2014年09月08日 22:42
  • 1247

linux下编写的一个最简单的Makefile文件

Makefile核心要点: 1.会不会写makefile从侧面说明了一个人是否具备完成大型项目开发大型工程的能力 2.makefile是用来编译链接文件的,实现了自动化编译 3.与make指令搭...
  • lizhidefengzi
  • lizhidefengzi
  • 2017年04月03日 15:09
  • 1874

快速实现工程makefile的简单通用模板

以前刚开始接触linux开发的时候,发现makefile真麻烦,我学C/C++开发已经花了不少时间了,现在还要花这个时间类搞这玩意,真是麻烦。真希望能出现一个模板,我只需要填下我需要编译的文件,以及相...
  • ErvinX
  • ErvinX
  • 2016年12月08日 19:43
  • 631

Makefile 使用总结(个人觉得不错)

原文链接:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大...
  • Decisiveness
  • Decisiveness
  • 2016年03月23日 16:09
  • 470

linux下Makefile的简单例子及解释

http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html 对于大一点的项目,Makefile都是不可或缺的,这里记录一个自...
  • wangyin159
  • wangyin159
  • 2015年07月31日 10:51
  • 1089

如何写makefile?

 跟我一起写 Makefile陈皓 (CSDN)概述——什 么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的...
  • YUYOUFU
  • YUYOUFU
  • 2006年07月11日 16:29
  • 846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何写简单的Makefile
举报原因:
原因补充:

(最多只允许输入30个字)