linux中makefile编写

makefile  :文件编译管理脚本,linux系统提供的一套编译管理工具。
1.执行make命令会自动调用makefile文件的内容。
2.自动检查代码是否更改,提高编译效率。
3.规则(注意按tab对齐)
目标文件   :   源文件
clean:
         rm  -rf  xxxx
调用make clean时会执行clean:下的内容

宏定义:
SRC := xxx

CC ;=编译器的名自
INC:=头文件路径
LIB_PATH:=库文件的路径
LIB_NAME:=库的名字

makefile中的函数:
自动搜索函数: wildcard
SRC:=$(wildcard *.c)
功能:搜索所有的.c文件
②自动替换函数:patsubst
OBJ:=$(patsubst %.c,%.o,$(SRC))
功能:把.c文件替换成.o文件

内核模块的makefile模板:
ifneq ($(KERNELRELEASE),)  //第一次执行makefile时, $(KERNELRELEASE)未被设置
my  module - objs := mymodule 1.o mymodule 2.o    //my module  e.o由mymodule 1.o与mymodule 2.o连接生成
obj - m := mydouble.o                                          //表示编译链接后将生成mymodule.o模块,即要插入内核的模块文件
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR  := /lib/modules/$(KVER)/build
TARGET = hello
KDIR = /lib/modules/$(shell uname -r)/build
PWD = $(shell pwd)
obj-m := $(TARGET).o
default:
        make -C $(KDIR) M=$(PWD) modules
clean:
        $(RM) *.o *.ko *.mod.c Module.symvers

default:make后默认执行的命令
    $(MAKE) -C $(KDIR) M= $(PWD)    // -C $(KDIR)知名跳转到内核源码目录下读取哪里的makefile, M= $(PWD)表明返回到当前目录继续读入、执行当前的makefile。当从内核源码目录返回时, $(KERNELRELEASE)已被定义

clean:   //如果make目标是clean,则直接执行clean标号后的操作,执行完rm命令后就结束了
    rm -rf  *.o * .mod.c * .ko * .symvers * .order * .markers * ~
endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值