Pixel3 Blueline Android10内核模块编译失败求助
编译Pixel3 Blueline(Android10)内核模块报错解决
问题概述
为Pixel3 Blueline(Android10)编译内核模块,使用内核分支android-msm-crosshatch-4.9-android10-qpr3,执行make命令后出现错误:make[1]: *** No rule to make target 'modules'. Stop.
测试代码 test.c
#include"linux/module.h" #include"linux/kernel.h" int init_module(void) { printk(KERN_INFO "Hello android kernel...\n"); return 0; } void cleanup_module(void) { printk(KERN_INFO "Goodbye android kernel...\n"); }
编译脚本 Makefile
obj-m += test.o all: make -C /home/ijiami/newdisk/android10/aosp_kernel M=$(PWD) modules
内核目录文件列表
ijiami@ijiami-All-Series:~/newdisk/android10/aosp_kernel$ ls build build.config out prebuilts prebuilts-master private
错误输出信息
ijiami@ijiami-All-Series:~/newdisk/android10/ko_test$ make make -C /home/ijiami/newdisk/android10/aosp_kernel M=/home/ijiami/newdisk/android10/ko_test modules make[1]: Entering directory '/home/ijiami/newdisk/android10/aosp_kernel' make[1]: *** No rule to make target 'modules'. Stop. make[1]: Leaving directory '/home/ijiami/newdisk/android10/aosp_kernel' Makefile:4: recipe for target 'all' failed make: *** [all] Error 2
解决步骤
1. 完整配置并编译内核
当前内核目录缺少标准内核源码的核心文件(如根Makefile、arch/include目录),说明内核未完成初始化或编译:
- 进入内核目录:
cd /home/ijiami/newdisk/android10/aosp_kernel - 加载Pixel3的设备配置:
build/build.sh crosshatch_defconfig - 编译内核生成必要构建规则:
make O=out -j$(nproc)
2. 修正模块Makefile
Android内核构建产物默认存放在out目录,需在Makefile中指定该路径:
obj-m += test.o all: make -C /home/ijiami/newdisk/android10/aosp_kernel O=out M=$(PWD) modules
3. 配置工具链环境变量
Android内核编译需要指定对应版本的ARM64工具链,执行以下命令:
export ARCH=arm64 export CROSS_COMPILE=/home/ijiami/newdisk/android10/aosp_kernel/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
注意替换工具链路径为你实际的目录。
4. 重新编译模块
回到模块目录执行make,即可生成test.ko内核模块文件。
内容的提问来源于stack exchange,提问作者jack yu
相关产品推荐
相关产品推荐

