本人初学安卓内核编译,也是第一次在本论坛发言。
目标设备ZUK Z2,为了练手就直接把Lineage官方GitHub里面的android_kernel_zuk_msm8996扒下来试着编译。
编译过程中../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c多次报错,然后编译失败,退出。
错误信息如下:
CC drivers/staging/qcacld-2.0/CORE/SME/src/csr/csrApiRoam.o
CC drivers/staging/qcacld-2.0/CORE/SME/src/csr/csrApiScan.o
CC drivers/staging/qcacld-2.0/CORE/SME/src/csr/csrCmdProcess.o
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3350:68: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapStartBssCompleteEvent.status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3379:44: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
(eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3386:25: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
(eSapStatus)context);
^~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3390:41: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
if ( eSAP_STATUS_SUCCESS == (eSapStatus )context)
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3403:45: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
else if (eSAP_STATUS_FAILURE == (eSapStatus )context)
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3414:67: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapStopBssCompleteEvent.status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3490:37: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sta_event_ptr->status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3513:75: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapStationDisassocCompleteEvent.status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3521:73: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapStationSetKeyCompleteEvent.status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3531:76: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapStationDeleteKeyCompleteEvent.status = (eSapStatus )context;
^~~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3586:67: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapActionCnf.actionSendSuccess = (eSapStatus)context;
^~~~~~~~~~~~~~~~~~~
../drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.c:3594:67: error: cast to smaller integer type 'eSapStatus' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
sapApAppEvent.sapevt.sapActionCnf.actionSendSuccess = (eSapStatus)context;
^~~~~~~~~~~~~~~~~~~
CC drivers/staging/qcacld-2.0/CORE/SME/src/csr/csrLinkList.o
CC drivers/staging/qcacld-2.0/CORE/SME/src/csr/csrLogDump.o
12 errors generated.
make[4]: *** [../scripts/Makefile.build:282:drivers/staging/qcacld-2.0/CORE/SAP/src/sapFsm.o] 错误 1
make[4]: *** 正在等待未完成的任务....
make[3]: *** [../scripts/Makefile.build:489:drivers/staging/qcacld-2.0] 错误 2
make[2]: *** [../scripts/Makefile.build:489:drivers/staging] 错误 2
make[1]: *** [/home/solderwire/nzm-kernel/android_kernel_zuk_msm8996/Makefile:1018:drivers] 错误 2
make[1]: 离开目录“/home/solderwire/nzm-kernel/android_kernel_zuk_msm8996/out”
make: *** [Makefile:152:sub-make] 错误 2
没有对内核进行任何修改,直接编译就报错。
配置文件使用的是自带的z2_plus_defconfig,同样没有修改。
编译器用的是最新版CBL,参数如下:
#!/bin/bash
args="-j$(nproc --all) \
O=out \
ARCH=arm64 \
CLANG_TRIPLE=aarch64-linux-gnu- \
CROSS_COMPILE=${HOME}/cbl/bin/aarch64-linux-gnu- \
CC=${HOME}/cbl/bin/clang \
CROSS_COMPILE_ARM32=${HOME}/cbl/bin/arm-linux-gnueabi- "
make ${args} z2_plus_defconfig
make ${args}
加上一个在其他教程里经常出现的除错选项CONFIG_DEBUG_SECTION_MISMATCH=y,无解。
请问该如何解决?
我是第一次研究安卓内核,希望能和坛子里的各位前辈们学习。