使用内核编译外部驱动时加工程头文件

1、自己的Makefile怎么搞?

一个模板,不好勿喷(^ — ^ 其实我没学Makefile 都是网上扒来的,大神们莫怪 )

MODULE_NAME := force_rmmod
#MODCFLAGS:=-O2 -Wall -DMODULE -D__KERNEL__ -DLINUX -std=c99
#EXTRA_CFLAGS  += $(MODULE_FLAGS) $(CFG_INC) $(CFG_INC)
EXTRA_CFLAGS  += -g -std=gnu99  -Wfatal-errors
LINUXINCLUDE  +=-I/home/zzj/rmmod


ifneq ($(KERNELRELEASE),)  # kernelspace

obj-m := $(MODULE_NAME).o

else                        # userspace


CURRENT_PATH ?= $(shell pwd)
LINUX_KERNEL ?= $(shell uname -r)
LINUX_KERNEL_PATH ?= /lib/modules/$(LINUX_KERNEL)/build
#LINUX_KERNEL_PATH ?= /mnt/d/source_code/kernel/linux-5.2

CURRENT_PATH := $(shell pwd)

modules:
    #-echo $(EXTRA_CFLAGS)
    -echo $(LINUXINCLUDE)
    make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules 

modules_install:
    make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules_install


clean:
    make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
    rm -f modules.order Module.symvers Module.markers

.PHNOY:
    modules modules_install clean



endif

简单总结:

  • 1、注意内核路径,你可以自己制定也可以使用ubuntu自己的
  • 2、注意别搞相对路径,人家Makefile写的是 -C , 写成相对路径makefile可不认。
  • 3、暂时没用objs,那个暂时不需要,我的理解是就是把我们要最终的链接文件拆解成多个**.o**,不知道理解对不对。

markdown如何使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值