12 Star 6 Fork 97

OpenHarmony/kernel_linux_build

 / 详情

通过原始命令编译内核报错

已完成
任务
创建于  
2021-11-30 19:29

【任务描述】
通过原始命令编译内核报错
【编译指令】
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”

评论 (5)

@狗子 创建了任务
展开全部操作日志

你好。我这是没遇到这个权限不够的问题,不确定是不是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。

是因为hdf的hc-gen引起的导致权限不够,导致BUILD_DIR=/kernel/OBJ//drivers/hdf/khdf/hc_gen_build/在根文件下面创建,这个问题后续会修补吗?

@狗子 任务状态待办的 修改为进行中

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提交。

liuyoufang 负责人设置为yuanbo
yuanbo 添加协作者yuanbo
yuanbo 负责人yuanbo 修改为Zhang

已经通过该PR修复:https://gitee.com/openharmony/vendor_hisilicon/pulls/272
请验证,如果还有问题请及时反馈,多谢

问题单已自验证完毕
感谢各位同学的技术支持
万分感谢

@狗子 任务状态进行中 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
6570022 julytoutes 1626704367 7806875 yuanbogit 1628044815
1
https://gitee.com/openharmony/kernel_linux_build.git
git@gitee.com:openharmony/kernel_linux_build.git
openharmony
kernel_linux_build
kernel_linux_build

搜索帮助

344bd9b3 5694891 D2dac590 5694891