【任务描述】
通过原始命令编译内核报错
【编译指令】
make -C /home/xwbmcu/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10 ARCH=arm CC="/home/xwbmcu/openharmony/kernel/linux/build/../../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/clang" HOSTCC="/home/xwbmcu/openharmony/kernel/linux/build/../../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/clang" PERL=/usr/bin/perl CROSS_COMPILE="/home/xwbmcu/openharmony/kernel/linux/build/../../../prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/arm-linux-gnueabi-" uImage
【报错原因】
make: 进入目录“/home/xwbmcu/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10”
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
CHK include/generated/compile.h
drivers/hdf/khdf/Makefile:21: PRODUCT_PATH=vendor/hisilicon/Hi3516DV300
HCS_DIR = /home/xwbmcu/openharmony/vendor/hisilicon/Hi3516DV300/hdf_config/khdf/hdf_test
make -C /home/xwbmcu/openharmony/drivers/framework/tools/hc-gen BUILD_DIR=/kernel/OBJ//drivers/hdf/khdf/hc_gen_build/
CC src/lexer.cpp
mkdir: 无法创建目录 “/kernel”: 权限不够
make[5]: *** [Makefile:22:/kernel/OBJ//drivers/hdf/khdf/hc_gen_build//src/lexer.o] 错误 1
make[4]: *** [drivers/hdf/khdf/../../../../vendor/hisilicon/Hi3516DV300/hdf_config/khdf//hdf_test/Makefile:75:/kernel/OBJ//drivers/hdf/khdf/hc_gen_build/hc-gen] 错误 2
make[3]: *** [scripts/Makefile.build:497:drivers/hdf/khdf/../../../../vendor/hisilicon/Hi3516DV300/hdf_config/khdf//hdf_test] 错误 2
make[2]: *** [scripts/Makefile.build:497:drivers/hdf/khdf] 错误 2
make[1]: *** [scripts/Makefile.build:497:drivers/hdf] 错误 2
make: *** [Makefile:1822:drivers] 错误 2
make: 离开目录“/home/xwbmcu/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10”
你好。我这是没遇到这个权限不够的问题,不确定是不是hdf的hc-gen引起的,建议可以更新下drivers/framework/tools/hc-gen的代码尝试下;可以先删除该目录,再使用repo sync -c --no-tags -j16同步。
我这边是这么操作的,进入master分支repo工程的主目录,整编通过后:
export PRODUCT_PATH=vendor/hisilicon/Hi3516DV300 #hdf需要
cp out/KERNEL_OBJ/kernel/OBJ/linux-5.10/.config out/KERNEL_OBJ/kernel/src_tmp/linux-5.10/
再执行上述make 编译命令,编译uImage。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
HC_GEN := $(OUT_DIR)/kernel/OBJ/${KERNEL_VERSION}/drivers/hdf/khdf/hc_gen_build/hc-gen
hc-gen的BUILD_DIR是这样生成的,目的是为了把hc-gen生成到out临时目录中便于集中编译中间文件,你这边手动make时候没有手动export OUT_DIR
这个变量,所以产生了错误的生成目录。
在编译系统编译时 OUT_DIR
是在内核的编译脚本中导出的:
kernel/linux/build/kernel_module_build.sh:18:export OUT_DIR=$1
临时解决办法:
对于你的本地环境,make前增加 export OUT_DIR=/home/xwbmcu/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10
长期解决办法:
hc-gen makefile中增加OUT_DIR
未指定情况的兼容,该变量未指定时生成到源码目录,相关fix将会关联该PR提交。
已经通过该PR修复:https://gitee.com/openharmony/vendor_hisilicon/pulls/272
请验证,如果还有问题请及时反馈,多谢
问题单已自验证完毕
感谢各位同学的技术支持
万分感谢
登录 后才可以发表评论