执行make debug
时报错:
修改driver中makefile文件约第100行:
$(NAME).ko: *.c *.h
$(call assert-variables)
sed -i 's/#define MAJOR_NUM [^\n]*/#define MAJOR_NUM $(MAJNUM)/g' $(DRVR_HDR)
sed -i 's/#define DEVICE_NAME [^\n]*/#define DEVICE_NAME "$(NAME)"/g' $(DRVR_HDR)
sed -i 's/#define VENDOR_ID0 [^\n]*/#define VENDOR_ID0 0x$(VENDOR_ID0)/g' $(DRVR_HDR)
sed -i 's/#define VENDOR_ID1 [^\n]*/#define VENDOR_ID1 0x$(VENDOR_ID1)/g' $(DRVR_HDR)
sed -i 's/#define DEBUG [^\n]*/#define DBUG 1/g' $(DRVR_HDR)
sed -i 's/#define DBUG [^\n]*/#define $(DBUGVAL) 1/g' $(DRVR_HDR)
make -C $(KDIR) SUBDIRS=`pwd` modules
rm -rf $(LIB_OBJS)
将SUBDIRS=pwd
修改为M=$(shell pwd)
如遇到在modprobe 或 make install 时报错
如:
insmod: ERROR: could not insert module lkm_example.ko: Invalid module format
则可能是因为当前linux系统内核版本和读取的版本号不同
(Ubuntu小版本中图省事经常迁移版本号)
解决方案:insmod: ERROR: could not insert module lkm_example.ko: Invalid module format
sudo apt update && sudo apt upgrade
sudo apt remove --purge linux-headers-*
sudo apt autoremove && sudo apt autoclean
sudo apt install linux-headers-(内核版本号查看uname -r)-generic