Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中记录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动发现最终的生成文件已经过时,而应该重新编译相应的模块。

Linux应用层的Makefile通用模板

######################################
#
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))#target you can change test to what you want
#目标文件名,输入任意你想要的执行文件名
TARGET  := server#compile and lib parameter
#编译参数
CC      := gcc
LIBS    :=
LDFLAGS := -lpthread
DEFINES := -g
INCLUDE := -I.
CFLAGS  := -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.sorm -fr *.orm -fr $(TARGET)veryclean : cleanrm -fr $(TARGET)$(TARGET) : $(OBJS)$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

Linux驱动层的Makefile通用模板

ifeq ($(KERNELRELEASE),)KERNELDIR ?= /home/linux/linux-3.14/                //ARM编译使用
#KERNELDIR ?= /lib/modules/$(shell uname -r)/build  //ubuntu编译使用
PWD := $(shell pwd)modules:$(MAKE) -C $(KERNELDIR) M=$(PWD) cp *.ko /source/rootfsmodules_install:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_installclean:rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module* modules*.PHONY: modules modules_install cleanelseobj-m := fs4412_adc.o
endif

Makefile语法规则请参考:跟我一起写makefile完整版带书签pdf,对第二版进行了重新排版,添加新版的Makefile语法规则,并对代码进行详细注释,如下图示,下载地址:https://download.csdn.net/download/u010872301/10028318

makefile模板相关推荐

  1. 一个适用各类场合的Makefile模板

    1.写在前面 对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供了"一键编译",编码完成后只需一个操作即可完成编译.链接.生成目标文件.Linu ...

  2. 一个STM32编译Makefile模板

    最近突然对STM32感兴趣,研究了一下.STM32的编译方式非常多,由于一直对gcc情有独钟,所以还是喜欢使用Makefile+gcc编译的方法.当时从51单片机转向AVR单片机开发时,也是通过这种方 ...

  3. Makefile模板的继续改进

    layout: post title: category : linux系统 tags : [Makefile] 上一文章的Makefile,存在一个比较大的问题,那就是生成可执行的二进制文件时,会链 ...

  4. 一个使用多年的Makefile模板

    layout: post title: category : linux系统 tags : [Makefile] 许久以前,一直使用自己总结的Makefile模板,这个模板也是基于现有资料整理而成的. ...

  5. 复杂多目录的Makefile模板及示例

    大约一年多以前,还在移植u-boot,当时参考了u-boot的Makefile,做了一个多目录的Makefile模板.如今,一年过去了,本篇文章还是折腾Makefile模板,本人的水平由此可见一斑.当 ...

  6. 复杂多目录的Makefile模板及示例-转

    大约一年多以前,还在移植u-boot,当时参考了u-boot的Makefile,做了一个多目录的Makefile模板.如今,一年过去了,本篇文章还是折腾Makefile模板,本人的水平由此可见一斑.当 ...

  7. 通用Makefile模板

    #################################################################################################### ...

  8. GNU/Linux智能Makefile模板(多目录,多文件)

    本文提供一个在GNU/Linux环境下通用的智能Makefile模板,用户可以将其引入到自己的工程当中.即使用户对此 Makefile的工作原理不甚了解,但是只需要修改少数几个关键变量,就可以满足不同 ...

  9. 万能 Makefile 模板

    在 Linux 编程时,对于很多小工程来说,很多时候似乎没有必要用 autoconf 和 automake 工具来生成 Makefile,反而自己写一个 Makefile 更省事.这里给大家提供一个简 ...

  10. LINUX驱动Makefile模板

    网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题.下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至 ...

最新文章

  1. 设计模式之桥接模式(Bridge)摘录
  2. Appium_pytest fixture的使用
  3. 设计模式(2)--Singleton(单例模式)--创建型
  4. ReviewForJob——最小生成树(prim + kruskal)源码实现和分析
  5. python中int函数的用法浅析_Python中int()函数的用法浅析
  6. mysql加上判断_在mysql中where加if判断
  7. 应对亚洲劳动力成本不断上升的挑战
  8. 红茶一杯话Binder(初始篇)
  9. JQuery中ajax用法
  10. Java 编程题自动评分技术的研究与实现(一)
  11. 微擎支付返回商户单号_易宝支付哪个平台扣的,被易宝支付扣款怎么办
  12. 分布式常见面试题总结(2021)
  13. win11安装ie浏览器
  14. 高分三号卫星(GF-3)简介
  15. 证书无效打不开网站?如何修复Mac上的无效证书错误
  16. 大数据如何改变我们的国庆假期?
  17. pandas 插入空列_Pandas在DF创建期间添加额外的空列(Pandas add additional empty columns during DF creation)...
  18. 【实战技能】不做绑架公司的技术团队成员
  19. dataTable 固定列
  20. 详解【java实现】编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出。

热门文章

  1. [linux] redhat 7 ssh 安装配置免密登录
  2. mysql配置和管理(转载)
  3. ACdream 1148(莫比乌斯反演+分块)
  4. TypeScript -脚本编程语言
  5. 推理速度快千倍!谷歌开源语言模型Transformer-XL
  6. Window系统下 MongoDB 下载 和 安装
  7. 机器学习——支持向量机(SVM)
  8. inventor弧度怎么标注_家里房间太大,WiFi信号覆盖不了怎么办?网件新作:分身术...
  9. json与字面量定义对象的区别,请不要混淆,与字符串转换
  10. 初一计算机第6单元,青岛出版社初中信息技术 七年级下册第二单元 第6课 海报设计 教学设计...