Hi, I have a private custom module I build via various scripts since I setup since I knew I'd have no clue how to do it in the future. It's been working great for years, but now it's broken with the move from 4.19.xx to 5.4.22 so the future is here and don't remember much about how I set it all up. But it does look to me that the failure has to do with a support library I have it build. Can the kbuild experts tell me what changed with V5 from V4.19 that breaks building my custom module. Thanks!! Here's the information (I'm writing this in Windows so my dir output will be from windows): The input/source files: 01/25/2016 06:52 PM 1,501 linuxdriverc.c 01/24/2016 06:59 PM 284 linuxdrivercpp.cpp 01/22/2016 07:20 PM 1,124 linuxdriverdumpbuf.c 09/22/2019 12:17 AM 4,985 linuxdriverfile.c 01/22/2016 07:20 PM 2,142 linuxdriverprintk.c When the 4.x version (this was 4.19.97) finishes the dir contains: 01/22/2020 12:43 AM 338 .junk.ko.cmd 01/22/2020 12:43 AM 29,743 .junk.mod.o.cmd 01/22/2020 12:43 AM 220 .junk.o.cmd 01/22/2020 12:43 AM 581 .lib.a.cmd 01/22/2020 12:43 AM 29,795 .linuxdriverc.o.cmd 01/22/2020 12:43 AM 30,248 .linuxdriverdumpbuf.o.cmd 01/22/2020 12:43 AM 36,098 .linuxdriverfile.o.cmd 01/22/2020 12:43 AM 30,235 .linuxdriverprintk.o.cmd 01/22/2020 12:43 AM 1,908 junk.ko 01/22/2020 12:43 AM 650 junk.mod.c 01/22/2020 12:43 AM 1,792 junk.mod.o 01/22/2020 12:43 AM 260 junk.o 01/22/2020 12:43 AM 1,084 lib.a 01/22/2020 12:43 AM 29 linuxdriverc.c 01/22/2020 12:43 AM 1,040 linuxdriverc.o 01/22/2020 12:43 AM 33 linuxdrivercpp.cpp 01/22/2020 12:43 AM 976 linuxdrivercpp.o 01/22/2020 12:43 AM 35 linuxdriverdumpbuf.c 01/22/2020 12:43 AM 1,320 linuxdriverdumpbuf.o 01/22/2020 12:43 AM 32 linuxdriverfile.c 01/22/2020 12:43 AM 1,448 linuxdriverfile.o 01/22/2020 12:43 AM 34 linuxdriverprintk.c 01/22/2020 12:43 AM 1,564 linuxdriverprintk.o 01/22/2020 12:43 AM 1,084 linuxdriversup.a 01/26/2016 05:16 PM 2,188 Makefile 01/22/2020 12:43 AM 0 Module.symvers 01/22/2020 12:43 AM 71 modules.order For the 5.4.22 the files are: 02/24/2020 12:04 PM 573 .lib.a.cmd 02/24/2020 12:04 PM 30,740 .linuxdriverc.o.cmd 02/24/2020 12:04 PM 31,278 .linuxdriverdumpbuf.o.cmd 02/24/2020 12:04 PM 37,708 .linuxdriverfile.o.cmd 02/24/2020 12:04 PM 31,265 .linuxdriverprintk.o.cmd 02/24/2020 12:04 PM 1,080 lib.a 01/25/2016 06:52 PM 29 linuxdriverc.c 02/24/2020 12:04 PM 1,040 linuxdriverc.o 01/24/2016 06:59 PM 33 linuxdrivercpp.cpp 02/24/2020 12:04 PM 976 linuxdrivercpp.o 01/22/2016 07:20 PM 35 linuxdriverdumpbuf.c 02/24/2020 12:04 PM 1,320 linuxdriverdumpbuf.o 09/22/2019 12:17 AM 32 linuxdriverfile.c 02/24/2020 12:04 PM 1,448 linuxdriverfile.o 01/22/2016 07:20 PM 34 linuxdriverprintk.c 02/24/2020 12:04 PM 1,564 linuxdriverprintk.o 01/26/2016 05:16 PM 2,188 Makefile There are no error messages other than it can't find junk.o for LD: Starting KBuild make... make[3]: Entering directory '/usr/src/linux-headers-5.4.22-686-iflnet' LD [M] /media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o ld: no input files scripts/Makefile.build:446: recipe for target '/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o' failed make[4]: *** [/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o] Error 1 Makefile:1652: recipe for target '/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet' failed make[3]: *** [/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet] Error 2 make[3]: Leaving directory '/usr/src/linux-headers-5.4.22-686-iflnet' The makefile used is: # You should only need to change the items marked ** fill in ** # everything else should be automatic. # the version of the kernel the module is being compiled for KVER?=$(shell uname -r) # the directory of the kernel build system KDIR:=/lib/modules/$(KVER)/build # fill in the verbose level you want V:=0 ################################# # fill in the name of the module ** fill in ** ################################# mymodlib_name:=linuxdriversup ################################# # unique cpp build flags ** fill in ** ################################# # CC_FLAGS+=-I. # flags file for building CPP versions FLAGS:=/media/sf_SRC_DRIVE/libs/linux_drivers/buildopts/$(KVER)/buildopts.cfg ################################# # extra C flags to use ** fill in ** ################################# EXTRA_CFLAGS+=-I. #EXTRA_CFLAGS+=-Werror #EXTRA_CFLAGS += -std=gnu99 #EXTRA_CFLAGS += -Wno-declaration-after-statement ############## # code start # ############## ifeq ($(V),1) Q= else Q=@ endif # this was the only way I figured out how to get the # kbuild envrionment to build the library for me. the # cpp item doesn't really need to be built in this # envrionment but we do it since it works. # Setup module name for kbuild obj-m:=junk.o junk-objs:=lib.a # build sources in the target directory SOURCES_ALL:=$(filter-out %.mod.c,$(shell find $(M) -maxdepth 1 -name "*.cpp" -or -name "*.c")) # add the sources and to the kbuild lib-y+=$(addsuffix .o,$(notdir $(basename $(SOURCES_ALL)))) # pattern for compiling the c++ parts %.o: %.cpp $(FLAGS) $(info doing [$@]) $(Q)g++ `cat $(FLAGS)` $(CC_FLAGS) -fno-exceptions -fno-rtti -Wall -c -o $@ $< .PHONY: all all: $(Q)echo Run make from main directory .PHONY: renamelib renamelib: # the -p is not working to preserve timestamps but touch works @cp -p lib.a $(mymodlib_name).a ; \ touch -r lib.a $(mymodlib_name).a; \ rm -fr .tmp_versions # rm -f junk.* .*.cmd ; removing either of these trigger full build .PHONY: clean clean: # note this deletes .a .o etc files in subdirs too! $(Q)$(MAKE) -C $(KDIR) M=$(CURDIR) V=$(V) clean