I use these commands to compile kernel successfully.
TEGRA_KERNEL_OUT=~/nvidia/nvidia_sdk/image
export LOCALVERSION=-tegra
export CROSS_COMPILE=aarch64-linux-gnu-
mkdir -p $TEGRA_KERNEL_OUT
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig
make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j4
then I want to cross compile a simple kernel module and it failed.
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j4 modules_prepare
cd ~/nvidia/nvidia_sdk/module_src
make ARCH=arm64 -C ~/nvidia/nvidia_sdk/JetPack_4.2.1_Linux_GA_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9 M=$(pwd)
failed message:
make: Entering directory '~/nvidia/nvidia_sdk/JetPack_4.2.1_Linux_GA_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9'
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
LD ~/nvidia/nvidia_sdk/module_src/built-in.o
CC [M] ~/nvidia/nvidia_sdk/module_src/hello.o
In file included from <command-line>:0:0:
././include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory
compilation terminated.
scripts/Makefile.build:341: recipe for target '~/nvidia/nvidia_sdk/module_src/hello.o' failed
make[1]: *** [/~/nvidia/nvidia_sdk/module_src/hello.o] Error 1
Makefile:1629: recipe for target '_module_/~/nvidia/nvidia_sdk/module_src' failed
make: *** [_module_/~/nvidia/nvidia_sdk/module_src] Error 2
make: Leaving directory '/~/nvidia/nvidia_sdk/JetPack_4.2.1_Linux_GA_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9'
when I have cross-compile kernel to TEGRA_KERNEL_OUT path, how can I cross-compile external kernel module next?
I follow NVIDIA Tegra Linux Driver Package Development Guide 32.2 Release, and faild.