内核源码分支:
https://github.com/raspberrypi/linux/tree/rpi-5.10.y
参考其他网站,注释掉arch/arm64/include/asm/jump_label.h文件里面的内联汇编分支;
修改arch/arm64/include/asm/memory.h里面的MIN_THREAD_SHIFT为"(15 + KASAN_THREAD_SHIFT)",因为-O0编译的函数局部变量不会被优化,局部变量使用栈内存,调用层次过深会导致内核栈越界,所以增加内核栈大小;
将Makefile里面的CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE下面的KBUILD_CFLAGS修改为“KBUILD_CFLAGS += -O0”;
关闭虚拟化,-O0下暂时没有调通虚拟化;
其他编译错误能屏蔽的屏蔽,少数未定义函数是编译检查使用的,-O1及更高级别不存在这类非法的函数调用,可以写成空函数或者直接注释掉调用的地方,其他大部分未定义函数是别的未打开编译选项模块的函数,正常需要加编译开关,-O1及更改级别不会报错,是因为编译器检查到这部分函数不会被调用,直接优化掉了对应代码,-O0不优化就保留了这部分函数调用,所以-O0根据具体情况注释掉相关代码调用即可;