1、问题背景

     在laval社区中,有很多用户都遇到了在输出目录下单独编译内核失败的情况,因此在这里简单的说明一下问题根因及解决方案。

2、问题根因

     OpenHarmony在编译内核时,是通过多个sh脚本及mk文件嵌套调用进行编译工作的,单独进入输出目录下执行make-ohos.sh脚本时,是无法正常读取到所需环境变量的,因此会出现部分资源无法查询到的情况。

3、常规方案

     在OpenHarmony编译子系统中,可以直接通过 ./build.sh --product-name 产品名  -T kernel 来单独编译内核,此方法是正统编译方案,建议使用该方法。
example:
./build.sh --product-name rk3568 -T kernel

4、正向定位

     单独编译执行make-ohos.sh指令本身是规避方案,避免进行编译的前期检查和解析耗时。使用该方案时,会遇到如下错误:

img


     此时可以直接进入out/kernel/OBJ/linux-5.10目录下,执行 export KBUILD_OUTPUT=/home/xxx/out/kernel/OBJ/linux-5.10
     example:
export KBUILD_OUTPUT=/home/code/out/kernel/OBJ/linux-5.10
     也可以在kernel.mk中将"export KBUILD_OUTPUT=$(KERNEL_OBJ_TMP_PATH) "echo 至某个文件中,然后在make-ohos.sh中通过source加载。
     亦或者,直接在make-ohos.sh文件中加入"OBJ_PATH=/home/XXX/out/kernel/OBJ/linux-5.10"。
     随后即在out/kernel/src_tmp/linux-5.10/目录下执行如下脚本

./make-ohos.sh TB-RK3568X0 enable_ramdisk
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐