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如何使用