rogxo@home:~$

安卓内核编译

设备:Oneplus 5

内核源码:https://github.com/MoKee/android_kernel_oneplus_msm8998

编译器:gcc-arm-9.2

编译脚本:

export ARCH=arm64
export SUBARCH=arm64
export AARCH64=/home/rog/project/android_kernel/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
export AARCH32=/home/rog/project/android_kernel/toolchain/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin
export PATH=$ANDROID_AARCH64:$PATH
export CROSS_COMPILE=$AARCH64/aarch64-none-linux-gnu-
export CROSS_COMPILE_ARM32=$AARCH32/arm-none-linux-gnueabihf-

make O=output/ mokee_oneplus5_defconfig
make O=output/ -j$(($(nproc --all)/4))

编译过程中将错误视为了警告,故在Makefile中添加-w选项忽略警告

过程中尝试了8个不同版本的内核 换了6个不同版本,不同厂商的gcc编译器

最终编译成功

a8ed98b25150eb6b2fb75c119f96f74c.png

add3be182170c48d2507a7a94f76a15c.png

但是。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。刷入之后无限重启手机变砖

故第二次编译内核

内核源码:https://github.com/PixelExperience-Devices/kernel_oneplus_msm8998

编译器:proton-clang https://github.com/kdrag0n/proton-clang

编译脚本:

#!/bin/bash
args="-j$(($(nproc --all)/4))		#CPU性能的的1/4
O=out \
ARCH=arm64 \
SUBARCH=arm64 \
CLANG_TRIPLE=aarch64-linux-gnu- \
CROSS_COMPILE=${HOME}/project/android_kernel/toolchain/proton-clang/bin/aarch64-linux-gnu- \
CC=${HOME}/project/android_kernel/toolchain/proton-clang/bin/clang \
CROSS_COMPILE_ARM32=${HOME}/project/android_kernel/toolchain/proton-clang/bin/arm-linux-gnueabi-"
make ${args} kernel_defconfig
make ${args}

一次成功

c60003d93b65e4864d29c68f807d1c7f.png

直接编译作弊驱动进内核并通过AnyKernel3输入内核Image.gz-dtb

驱动开机成功加载,设备成功创建!!!

总结:第一次变砖是因为并不是Mokee的系统,而第二次系统提前刷成了PixelExperience的,与内核兼容