Re: Moving from 4.x to 5.4.22 breaks custom module build.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I applied your patch and everything worked.  Completed my project in
30 seconds after I already wasted hours earlier today.  Thanks!!!!

On Mon, Feb 24, 2020 at 6:57 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote:
>
> On Tue, Feb 25, 2020 at 7:02 AM David F. <df7729@xxxxxxxxx> wrote:
> >
> > 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
>
>
> Perhaps, this line is the cause of the failure.
>
> Kbuild does not support linking *.a to a module.
>
> There exists a workaround patch, but it was rejected.
> https://patchwork.kernel.org/patch/11318691/#23088533
>
>
>
> Masahiro Yamada
>
>
> >
> > # 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
>
>
>
> --
> Best Regards
> Masahiro Yamada



[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux