Out-of-tree module build in a dedicated build directory.

Aleksei Fedotov lexa at cfotr.com
Thu Mar 15 09:33:31 EDT 2018


>> It looks like passing O= or KBUILD_OUTPUT= doesn't work for out of tree modules.

> It doesn't?  It should, what is the result when you try to do that?

It is trying to use path specified in O= as path to the pre-build
kernel and fails to find kernel scripts:

$ make V=1 -C $(KDIR) M=`pwd` O=`pwd`/build_x86
make: Entering directory '/home/lexa/linux'
make -C /home/lexa/module/build_x86 KBUILD_SRC=/home/lexa/linux \
-f /home/lexa/linux/Makefile
make[1]: Entering directory '/home/lexa/module/build_x86'
mkdir -p /home/lexa/module/.tmp_versions ; rm -f
/home/lexa/module/.tmp_versions/*

  WARNING: Symbol version dump ./Module.symvers
           is missing; modules will have no dependencies and modversions.

make -f /home/lexa/linux/scripts/Makefile.build obj=/home/lexa/module
make -f /home/lexa/linux/scripts/Makefile.build
obj=/home/lexa/module/module1 need-builtin=1
   rm -f /home/lexa/module/module1/built-in.o; ar rcSTPD
/home/lexa/module/module1/built-in.o
  gcc -Wp,-MD,/home/lexa/module/module1/.task1.o.d  -nostdinc -isystem
/usr/lib/gcc/x86_64-linux-gnu/5/include
-I/home/lexa/linux/arch/x86/include -I./arch/x86/include/generated
-I/home/lexa/linux/include -I./include
-I/home/lexa/linux/arch/x86/include/uapi
-I./arch/x86/include/generated/uapi -I/home/lexa/linux/include/uapi
-I./include/generated/uapi -include
/home/lexa/linux/include/linux/kconfig.h  -I/home/lexa/module/module1
-I/home/lexa/module/module1 -D__KERNEL__ -Wall -Wundef
-Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
-fshort-wchar -Werror-implicit-function-declaration
-Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2
-mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387
-mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup
-mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time
-DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1
-DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1
-DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1
-DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1
-pipe -Wno-sign-compare -fno-asynchronous-unwind-tables
-mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE
-fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0
-DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector-strong
-Wno-unused-but-set-variable -fno-var-tracking-assignments -g
-gdwarf-4 -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement
-Wno-pointer-sign -fno-strict-overflow -fno-stack-check
-fconserve-stack -Werror=implicit-int -Werror=strict-prototypes
-Werror=date-time -Werror=incompatible-pointer-types
-Werror=designated-init  -DMODULE  -DKBUILD_BASENAME='"task1"'
-DKBUILD_MODNAME='"mod1"' -c -o /home/lexa/module/module1/.tmp_task1.o
/home/lexa/module/module1/task1.c
/bin/sh: 1: scripts/basic/fixdep: not found
/home/lexa/linux/scripts/Makefile.build:316: recipe for target
'/home/lexa/module/module1/task1.o' failed
make[3]: *** [/home/lexa/module/module1/task1.o] Error 127
/home/lexa/linux/scripts/Makefile.build:575: recipe for target
'/home/lexa/module/module1' failed
make[2]: *** [/home/lexa/module/module1] Error 2
/home/lexa/linux/Makefile:1509: recipe for target
'_module_/home/lexa/module' failed
make[1]: *** [_module_/home/lexa/module] Error 2
make[1]: Leaving directory '/home/lexa/module/build_x86'
Makefile:146: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2
make: Leaving directory '/home/lexa/linux'



> And do you have a pointer to your Makefile, perhaps you are doing
> something "wrong" in it?

I don't use Makefile in my module, I solely rely only on Kbuild files.
Is that wrong?

-- 
Kind Regards,
Aleksei



More information about the Kernelnewbies mailing list