我是靠谱客的博主 傻傻夏天,最近开发中收集的这篇文章主要介绍【Linux内核】Linux内核模块编译时使用的Makefile文件模板,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用时请注意如下两点:

  • 此文件须放置到 驱动模块的源代码顶级目录下面
  • 在注释行 #WHAT_YOU_NEED_TO_CHANGED 下面将 MOD_NAMEMOD_SRCS 的取值根据实际情况进行修改
  • 此模板文件支持 使用【aarch64-linux-gnu-】交叉编译工具链 进行交叉编译到ARM64平台上,具体用法见 make help 输出
KVERS := $(shell uname -r)
#若定义了HC_KSD变量, 则以HC_KSD的取值替换默认的linux内核代码路径(/lib/modules/$(KVERS)/build)
KSRCDIR = /lib/modules/$(KVERS)/build
ifdef HC_KSD
KSRCDIR := $(HC_KSD)
endif

MAKE = make #代码默认不进行交叉编译
#若定义了HC_CTP变量, 则使用【aarch64-linux-gnu-】交叉编译工具链交叉编译到arm64上
ifdef HC_CTP
MAKE := make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64
endif

# WHAT_YOU_NEED_TO_CHANGED
#指定驱动模块的名字,注意:驱动模块的名字千万不能和本文件夹内的任何源文件同名!
MOD_NAME := hello
#指定驱动模块的所有依赖源文件
MOD_SRCS := hc_hello.c

#最终由XXX-objs链接生成$(MOD_NAME).o ,再生成$(MOD_NAME).ko
$(MOD_NAME)-objs := $(MOD_SRCS:.c=.o)
obj-m += $(MOD_NAME).o

# 模块编译额外FLAG, 放开后将以【完全不优化】模式编译模块
# EXTRA_CFLAGS = -g -O0

build: modules
modules clean:
	$(MAKE) -C $(KSRCDIR) M=$(CURDIR) $@
help:
	@echo -e 'n[HC_KSD=/path/to/kernel/srcdir] [HC_CTP=1] make [{build|clean}]n'

最后

以上就是傻傻夏天为你收集整理的【Linux内核】Linux内核模块编译时使用的Makefile文件模板的全部内容,希望文章能够帮你解决【Linux内核】Linux内核模块编译时使用的Makefile文件模板所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(212)

评论列表共有 0 条评论

立即
投稿
返回
顶部