OpenHarmony 单独编译内核失败案例分析
1、问题背景在laval社区中,有很多用户都遇到了在输出目录下单独编译内核失败的情况,因此在这里简单的说明一下问题根因及解决方案。 2、问题根因OpenHarmony在编译内核时,是通过多个sh脚本及mk文件嵌套调用进行编译工作的,单独进入输出目录下执行make-ohos.sh脚本时,是无法正常读取到所需环境变量的,
·
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指令本身是规避方案,避免进行编译的前期检查和解析耗时。使用该方案时,会遇到如下错误:
此时可以直接进入
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
更多推荐
已为社区贡献11条内容
所有评论(0)