编译lineageOS内核出现android_kernel_xiaomi_sdm845错误

问题描述 投票:0回答:1

我正在尝试为 android_kernel_xiaomi_sdm845 编译 LineageOS 内核。我使用以下命令克隆存储库: git 克隆https://github.com/LineageOS/android_kernel_xiaomi_sdm845.git。 之后我写了一个shell脚本。

#!/bin/bash

# TODO: 增加选择菜单

# 计时器
START_SEC=$(date +%s)

# 获取当前路径
CURRENT_DIR=$(pwd)

# 设置目标内核
TARGET_KERNEL="android_kernel_xiaomi_sdm845"

# 设置编译目录
TARGET_KERNEL_DIR="$CURRENT_DIR/$TARGET_KERNEL"
CLANG_DIR="$HOME/toolchains/neutron-clang"
# CLANG_DIR="$CURRENT_DIR/toolchains/tc-build/install"
ANYKERNEL_DIR="$CURRENT_DIR/AnyKernel3"

# 参数设定
CC="$CLANG_DIR/bin/clang"

THREAD=$(($(nproc --all) / 2))
ARCH=arm64
OUT_DIR="$CURRENT_DIR/out/${TARGET_KERNEL}"

# 使用 neutron-clang 无需使用 Triple
CROSS_COMPILE=aarch64-linux-gnu-
# CROSS_COMPILE_COMPAT=arm-linux-gnueabi-
CC_ADDITION_FLAGS="AR=llvm-ar NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump STRIP=llvm-strip LLVM_IAS=1 LLVM=1"

# 编译参数
args="-j$THREAD \
    O=$OUT_DIR \
    ARCH=$ARCH \
    CROSS_COMPILE=$CROSS_COMPILE \
    CROSS_COMPILE_COMPAT=$CROSS_COMPILE_COMPAT \
    $CC_ADDITION_FLAGS \
    CC=$CC"

# 添加proton-clang到路径搜索目录中
export PATH="$CLANG_DIR/bin:$PATH"

#export DEFCONFIG_PATH=arch/arm64/configs
DEFCONFIG_NAME=sdm845_defconfig

# 准备KernelSU


# 构建默认配置
make_defconfig() {
    echo "------------------------------"
    echo "  Building Kernel Defconfig   "
    echo "------------------------------"

    cd $TARGET_KERNEL_DIR
    echo ${args}
    make ${args} $DEFCONFIG_NAME

    cd ${TARGET_KERNEL_DIR} || exit
}

# 内核构建
build_kernel() {
    echo "------------------------------"
    echo "       Building Kernel        "
    echo "------------------------------"

    cd $TARGET_KERNEL_DIR

    make ${args}

    END_SEC=$(date +%s)
    COST_SEC=$(($END_SEC - $START_SEC))
    echo "Kernel Build Costed $(($COST_SEC / 60))min $(($COST_SEC % 60))s"

    #find ${OUT_DIR}/$dts_source -name '*.dtb' -exec cat {} + >${OUT_DIR}/arch/arm64/boot/dtb

    cd $CURRENT_DIR
}



# 构建AnyKernel3包
buildAnyKernel() {
    echo "------------------------------"
    echo "    Build flashable zip       "
    echo "------------------------------"

    cd $CURRENT_DIR
    cp -rf $OUT_DIR/arch/arm64/boot/Image $ANYKERNEL_DIR/Image
    #cp -rf $OUT_DIR/arch/arm64/boot/dtb $ANYKERNEL_DIR/dtb;
    #cp -rf $OUT_DIR/arch/arm64/boot/dtbo.img $ANYKERNEL_DIR/dtbo.img;
    cd $ANYKERNEL_DIR
    OUTPUT_FILE=KSU_${TARGET_KERNEL}-Thyme-$(date +"%y.%m.%d").zip
    zip -r $OUTPUT_FILE *
    mv $OUTPUT_FILE $CURRENT_DIR/$OUTPUT_FILE
    rm -rf $OUTPUT_FILE

    echo "The output is $OUTPUT_FILE"
    cd $CURRENT_DIR
}

main() {
    make_defconfig && \
    build_kernel 
    # && \
    # buildAnyKernel


}

# 构建工具链
buildCBL(){
    cd toolchains/tc-build
    ./build-llvm.py -I "$CURRENT_DIR/toolchains/CBL-Tools"
    cd $CURRENT_DIR
}

# 执行程序并输出日志
main 2>&1 | tee "$CURRENT_DIR/build_kernel.log"

运行./build.sh时,遇到以下错误:

arch/arm64/boot/dts/qcom/sdm845-v2-qvr-evt.dtb: ERROR (phandle_references): /soc/i2c@894000/synaptics_dsx@20: Reference to non-existent node or label "ts_int_active"

arch/arm64/boot/dts/qcom/sdm845-v2-qvr-evt.dtb: ERROR (phandle_references): /soc/i2c@894000/synaptics_dsx@20: Reference to non-existent node or label "ts_reset_active"

ERROR: Input tree has errors, aborting (use -f to force output)

我不知道如何处理这个问题,有人可以帮助我吗?

kernel xiaomi lineageos
1个回答
0
投票

对确切的设备使用 defconfig。例如小米8(北斗)

cat arch/arm64/configs/vendor/xiaomi/mi845_defconfig \
    arch/arm64/configs/vendor/xiaomi/dipper.config \
    > arch/arm64/configs/merged_defconfig
DEFCONFIG_NAME=merged_defconfig
© www.soinside.com 2019 - 2024. All rights reserved.