添加编译构建过程

首先在源码根目录vendor下添加 vendor/xingyun/t113_nand此目录,可参考hisilicon/hispark_taurus_linux/实现,创建好自己产品目录之后开始添加文件,首先需要创建的文件为编译文件,BUILD.gn,添加配置文件config.json,添加hals目录,目录暂时可以为空。其中BUILD.gn中的内容可以暂时先只有如下语句即可,注意,双引号内容最好与当前目录名称相同
group(“t113_nand”) {
}
然后打开config.json文件,添加相应的字段描述。如下为我添加构建初期的文件内容
{
“product_name”: “xingyun_t113_nand_board”,
“ohos_version”: “OpenHarmony 3.0”,
“device_company”: “xingyunelec”, //对应源码目录下/device/目录下的文件夹 xingyunelec
“board”: “t113_nand_linux”, //对应device/xingyunelec/目录下的文件夹t113_nand_linux
“kernel_type”: “linux”,
“kernel_version”: “5.4”,
“subsystems”: [
],
“third_party_dir”: “//third_party”,
“product_adapter_dir”: “//vendor/xingyun/t113_nand/hals”
}
所以你需要在device目录下创建该有的文件夹,示例我这里需要的目录则为device/xingyunelec/t113_nand_linux,创建完成目录后我们可以进行hb set操作了,可以看到出现我们的选择项了,选择我们自己的产品,然后回车
在这里插入图片描述回车之后出现如下图错误信息,因为我们没有配置产品的相关信息,现在我们开始配置产品信息

在这里插入图片描述
首先同样需要一个编译文件BUILD.gn,里面内容同上文大同小异,内容为如下。
group(“t113_nand_linux”) {
}
然后创建文件夹sdk_linux,改名字可以随意起,然后在device/xingyunelec/t113_nand_linux/sdk_linux目录里面创建文件config.gni。打开文件,其中内容做个介绍

kernel_type = “linux” //使用的内核,一般有"linux", “liteos_a”, “liteos_m”.
kernel_version = “5.4” //使用的内核版本
board_cpu = “cortex-a7” //使用的芯片架构, “cortex-a7”, “riscv32”
board_arch = “” //使用的芯片架构 “armv7-a”, “rv32imac”
board_toolchain = “” //使用的工具链gcc-arm-none-eabi, arm-linux-harmonyeabi-gcc, ohos-clang
board_toolchain_path = “” //使用的工具链路径,直接把交叉编译器的全路径放进来即可
board_toolchain_prefix = “” //gcc-arm-none-
board_toolchain_type = “clang” //“gcc” or “clang”
board_cflags = [ //编译c的选项
“-mfloat-abi=softfp”,
“-mfpu=neon-vfpv4”,
]
board_cxx_flags = [
“-mfloat-abi=softfp”,
“-mfpu=neon-vfpv4”,
]
board_ld_flags = [] //链接库选项

board_include_dirs = [] //包含的第三方源码头文件

board_adapter_dir = “”

board_configed_sysroot = “”

storage_type = “”
填写以上内容即可。
然后我们再去执行hb set,选择我们添加的产品执行结果如下图,不会报错了。
在这里插入图片描述
接着我们尝试开始进行编译,直接运行hb build。
在这里插入图片描述
然后发现报错了,而且编译的还是5.10的内核,这是怎么回事,其实是会去build/ohos/kernel/kernel.gni读取这里面的值去默认编译内核版本,为什么会这样,目前还不知道,知道的可以告知下。那我们先添加内核组件尝试下,可能不能去编译我们选定的内核版本,修改
vendor/xingyun/t113_nand/config.json文件,在组件里面添加内核编译组件,添加的内容如下
{
“subsystem”: “kernel”,
“components”: [
{ “component”: “linux_5_4”, “features”:[] }
]
}
添加后完整的文件内容如下图所示
在这里插入图片描述
添加完成后开始编译,执行hb build -f,很好,又报错了,报错内容如下,很明显,找不到组件编译规则
[OHOS INFO] ERROR at //build/lite/BUILD.gn:60:9: Assertion failed.
[OHOS INFO] assert(
[OHOS INFO] ^-----
[OHOS INFO] Component “linux_5_4” not found, please check your product configuration.
[OHOS INFO] See //build/lite/BUILD.gn:61:13:
[OHOS INFO] component_found,
[OHOS INFO] ^--------------
[OHOS INFO] This is where it was set.
[OHOS INFO] ohos_build_compiler: clang
[OHOS ERROR] you can check build log in /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/build.log
[OHOS ERROR] command: “/home/d1/openHarmony/t113/prebuilts/build-tools/linux-x86/bin/gn gen /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board --root=/home/d1/openHarmony/t113 --dotfile=/home/d1/openHarmony/t113/build/lite/.gn --script-executable=/usr/bin/python3 --args=ohos_build_compiler_specified=“clang” ohos_build_compiler_dir=”//prebuilts/clang/ohos/linux-x86_64/llvm" product_path="/home/d1/openHarmony/t113/vendor/xingyun/t113_nand" device_path="/home/d1/openHarmony/t113/device/xingyunelec/t113_nand_linux/sdk_linux" ohos_kernel_type=“linux” ohos_build_type=“debug” ohos_build_time=“1648698057822” ohos_build_datetime=“2022-03-31 19:40:57” ohos_full_compile=true" failed
[OHOS ERROR] return code: 1
[OHOS ERROR] execution path: /home/d1/openHarmony/t113
所以需要我们去解决,通过对比,发现在hisilicon下面有使用其他版本的内核的组件,最后定位到的文件为 build/lite/components/kernel.json,尝试在此处添加我们自定义内核的编译规则。添加如下内容即可。文件正确性有待验证,主要是"output": [ “uImage_hi3516dv300_smp” ],

{
“component”: “linux_5_4”,
“description”: “linux 5.4”,
“optional”: “false”,
“dirs”: [
“kernel/linux/build”
],
“targets”: [
“//kernel/linux/build:linux_kernel”
],
“rom”: “”,
“ram”: “”,
“output”: [
“uImage_hi3516dv300_smp”
],
“features”: [],
“adapted_board”: [
“t113_nand_linux”
],
“adapted_kernel”: [ “linux” ],
“deps”: {
“components”: [],
“third_party”: []
}
}
然后修改文件kernel/linux/build/BUILD.gn,将文中内容对比修改为如下内容
-command = “./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} ${board_name} ${linux_kernel_version}”
+command = “./kernel_module_build.sh ${outdir} ${build_type} ${clang_dir} ${product_path_rebase} b o a r d n a m e l i n u x − {board_name} linux- boardnamelinux{kernel_version}”
然后把对应的内核源文件放入到kernel/linux/目录下,如下图,增加linux-5.4目录,里面即为内核源码
在这里插入图片描述
然后开始执行编译hb build,发现报错,报错信息如下。
[OHOS ERROR] [6/17] ACTION //kernel/linux/build:linux_kernel(//build/lite/toolchain:linux_x86_64_ohos_clang)
[OHOS ERROR] FAILED: obj/kernel/linux/build/linux_kernel_build_ext_components.txt
[OHOS ERROR] /usr/bin/python3 …/…/…/build/lite/build_ext_components.py --path=…/…/…/kernel/linux/build --command=./kernel_module_build.sh\ /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board\ small\ /home/d1/openHarmony/t113/prebuilts/clang/ohos/linux-x86_64/llvm\ vendor/xingyun/t113_nand\ t113_nand_linux\ linux-5.4 --target_dir=/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/obj/kernel/linux/build/build.log --out_dir=/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/error.log
[OHOS ERROR] echo “build kernel…”
[OHOS ERROR] build kernel…
[OHOS ERROR] rm -rf /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4;mkdir -p /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4;cp -arfL /home/d1/openHarmony/t113/kernel/linux/linux-5.4/* /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/
[OHOS ERROR] cd /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4 && patch -p1 < /home/d1/openHarmony/t113/kernel/linux/patches/linux-5.4/_patch/hdf.patch && patch -p1 < /home/d1/openHarmony/t113/kernel/linux/patches/linux-5.4/_patch/.patch
[OHOS ERROR] /bin/sh: /home/d1/openHarmony/t113/kernel/linux/patches/linux-5.4/_patch/hdf.patch: No such file or directory
[OHOS ERROR] kernel.mk:73: recipe for target ‘/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage’ failed
[OHOS ERROR] make: *** [/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage] Error 1
[OHOS ERROR] you can check build log in /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/build.log
[OHOS ERROR] command: “/home/d1/openHarmony/t113/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board” failed
[OHOS ERROR] return code: 1
[OHOS ERROR] execution path: /home/d1/openHarmony/t113
可以看到报错信息中有如下这样一句话,提示没有patch文件
/bin/sh: /home/d1/openHarmony/t113/kernel/linux/patches/linux-5.4/_patch/hdf.patch: No such file or directory
增加patch文件,首先需要修改kernel/linux/build/kernel_module_build.sh文件,增加自己板卡对应的设备名,后面会根据这个名字自动寻找对应的patch文件,修改内容如下
diff --git a/kernel/linux/build/kernel_module_build.sh b/kernel/linux/build/kernel_module_build.sh
index 826bd6c3e6…74f7f68340 100755
— a/kernel/linux/build/kernel_module_build.sh
+++ b/kernel/linux/build/kernel_module_build.sh
@@ -30,6 +30,8 @@ if [ “$2” == “small” ];then
fi
if [ “$5” == “hispark_taurus” ];then
export DEVICE_NAME=hi3516dv300
+elif [ “$5” == “t113_nand_linux” ];then //对应device/xingyunelec/目录下的t113_nand_linux文件夹名称
+export DEVICE_NAME=t113_nand_linux
fi
elif [ “$2” == “standard” ];then
export BUILD_TYPE=standard
然后在kernel/linux/patches目录下增加linux-5.4目录,在linux-5.4/目录下增加t113_nand_linux_patch目录,此目录是根据上一步添加的DEVICE_NAME + _patch构成,创建目录之后,在此目录中添加如下几个文件hdf.patch,t113_nand_linux.patch,t113_nand_linux_small.patch,当前文件里面还没有内容,只是为了让编译能够通过,至于为什么是这几个文件,可以从kernel.mk中如下语句看出为什么是这几个文件。
$(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(HDF_PATCH_FILE) && patch -p1 < ( D E V I C E P A T C H F I L E ) 或 者 还 可 以 从 如 下 编 译 报 错 信 息 得 知 / b i n / s h : / h o m e / d 1 / o p e n H a r m o n y / t 113 / k e r n e l / l i n u x / p a t c h e s / l i n u x − 5.4 / t 11 3 n a n d l i n u x p a t c h / t 11 3 n a n d l i n u x s m a l l . p a t c h : N o s u c h f i l e o r d i r e c t o r y [ O H O S E R R O R ] k e r n e l . m k : 74 : r e c i p e f o r t a r g e t ′ / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / k e r n e l / l i n u x − 5.4 / a r c h / a r m / b o o t / u I m a g e ′ f a i l e d [ O H O S E R R O R ] m a k e : ∗ ∗ ∗ [ / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / k e r n e l / l i n u x − 5.4 / a r c h / a r m / b o o t / u I m a g e ] E r r o r 1 添 加 完 成 后 , 开 始 执 行 h b b u i l d 编 译 过 程 , 提 示 如 下 信 息 , 没 有 配 置 文 件 。 c p : c a n n o t s t a t ′ / h o m e / d 1 / o p e n H a r m o n y / t 113 / k e r n e l / l i n u x / c o n f i g / l i n u x − 5.4 / . ′ : N o s u c h f i l e o r d i r e c t o r y 在 k e r n e l / l i n u x / c o n f i g / 目 录 下 , 随 便 拷 贝 一 个 其 他 版 本 的 l i n u x 内 核 , c p l i n u x − 5.10 l i n u x − 5.4 − r , 然 后 进 入 k e r n e l / l i n u x / c o n f i g / l i n u x − 5.4 / a r c h / a r m / c o n f i g s , 先 删 除 不 需 要 的 文 件 。 然 后 去 执 行 一 下 编 译 看 结 果 。 很 显 然 编 译 还 是 报 错 , 提 示 信 息 如 下 , 很 显 然 , 没 有 对 应 的 配 置 文 件 。 C a n ′ t f i n d d e f a u l t c o n f i g u r a t i o n " a r c h / a r m / c o n f i g s / t 11 3 n a n d l i n u x s m a l l d e f c o n f i g " ! 那 我 们 就 添 加 需 要 的 配 置 文 件 , 这 里 我 们 用 我 们 之 前 内 核 编 译 时 用 的 配 置 文 件 即 可 , 进 入 到 k e r n e l / l i n u x / l i n u x − 5.4 / a r c h / a r m / c o n f i g s 目 录 , 执 行 如 下 命 令 c p s u n 8 i w 20 p 1 s m p a u t o n a n d d e f c o n f i g . . / . . / . . / . . / c o n f i g / l i n u x − 5.4 / a r c h / a r m / c o n f i g s / t 11 3 n a n d l i n u x s m a l l d e f c o n f i g , 产 生 我 们 需 要 的 配 置 文 件 , 然 后 进 行 编 译 , 可 以 看 到 , 有 些 内 核 文 件 已 经 生 成 , 但 是 没 有 生 成 我 们 指 定 的 编 译 产 物 , 我 们 是 需 要 u I m a g e 文 件 K e r n e l : a r c h / a r m / b o o t / z I m a g e i s r e a d y [ O H O S E R R O R ] m u l t i p l e ( o r n o ) l o a d a d d r e s s e s : [ O H O S E R R O R ] T h i s i s i n c o m p a t i b l e w i t h u I m a g e s [ O H O S E R R O R ] S p e c i f y L O A D A D D R o n t h e c o m m a n d l i n e t o b u i l d a n u I m a g e [ O H O S E R R O R ] a r c h / a r m / b o o t / M a k e f i l e : 90 : r e c i p e f o r t a r g e t ′ a r c h / a r m / b o o t / u I m a g e ′ f a i l e d [ O H O S E R R O R ] m a k e [ 2 ] : ∗ ∗ ∗ [ a r c h / a r m / b o o t / u I m a g e ] E r r o r 1 [ O H O S E R R O R ] a r c h / a r m / M a k e f i l e : 342 : r e c i p e f o r t a r g e t ′ u I m a g e ′ f a i l e d [ O H O S E R R O R ] m a k e [ 1 ] : ∗ ∗ ∗ [ u I m a g e ] E r r o r 2 [ O H O S E R R O R ] m a k e [ 1 ] : L e a v i n g d i r e c t o r y ′ / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / k e r n e l / l i n u x − 5. 4 ′ [ O H O S E R R O R ] k e r n e l . m k : 74 : r e c i p e f o r t a r g e t ′ / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / k e r n e l / l i n u x − 5.4 / a r c h / a r m / b o o t / u I m a g e ′ f a i l e d [ O H O S E R R O R ] m a k e : ∗ ∗ ∗ [ / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / k e r n e l / l i n u x − 5.4 / a r c h / a r m / b o o t / u I m a g e ] E r r o r 2 [ O H O S E R R O R ] y o u c a n c h e c k b u i l d l o g i n / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d / b u i l d . l o g [ O H O S E R R O R ] c o m m a n d : " / h o m e / d 1 / o p e n H a r m o n y / t 113 / p r e b u i l t s / b u i l d − t o o l s / l i n u x − x 86 / b i n / n i n j a − w d u p b u i l d = w a r n − C / h o m e / d 1 / o p e n H a r m o n y / t 113 / o u t / t 11 3 n a n d l i n u x / x i n g y u n t 11 3 n a n d b o a r d " f a i l e d [ O H O S E R R O R ] r e t u r n c o d e : 1 [ O H O S E R R O R ] e x e c u t i o n p a t h : / h o m e / d 1 / o p e n H a r m o n y / t 113 然 后 修 改 如 下 文 件 k e r n e l / l i n u x / b u i l d / k e r n e l . m k , 修 改 内 容 如 下 d i f f − − g i t a / k e r n e l / l i n u x / b u i l d / k e r n e l . m k b / k e r n e l / l i n u x / b u i l d / k e r n e l . m k i n d e x 56 f c d e 79 e f . . c 8 d 8 b 41763100644 − − − a / k e r n e l / l i n u x / b u i l d / k e r n e l . m k + + + b / k e r n e l / l i n u x / b u i l d / k e r n e l . m k @ @ − 82 , 7 + 82 , 11 @ @ e n d i f i f e q ( (DEVICE_PATCH_FILE) 或者还可以从如下编译报错信息得知 /bin/sh: /home/d1/openHarmony/t113/kernel/linux/patches/linux-5.4/t113_nand_linux_patch/t113_nand_linux_small.patch: No such file or directory [OHOS ERROR] kernel.mk:74: recipe for target '/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage' failed [OHOS ERROR] make: *** [/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage] Error 1 添加完成后,开始执行hb build编译过程,提示如下信息,没有配置文件。 cp: cannot stat '/home/d1/openHarmony/t113/kernel/linux/config/linux-5.4/.': No such file or directory 在kernel/linux/config/目录下,随便拷贝一个其他版本的linux内核,cp linux-5.10 linux-5.4 -r,然后进入 kernel/linux/config/linux-5.4/arch/arm/configs,先删除不需要的文件。然后去执行一下编译看结果。很显然编译还是报错,提示信息如下 ,很显然,没有对应的配置文件。 Can't find default configuration "arch/arm/configs/t113_nand_linux_small_defconfig"! 那我们就添加需要的配置文件,这里我们用我们之前内核编译时用的配置文件即可,进入到kernel/linux/linux-5.4/arch/arm/configs目录,执行如下命令 cp sun8iw20p1smp_auto_nand_defconfig ../../../../config/linux-5.4/arch/arm/configs/t113_nand_linux_small_defconfig,产生我们需要的配置文件,然后进行编译,可以看到,有些内核文件已经生成,但是没有生成我们指定的编译产物,我们是需要uImage文件 Kernel: arch/arm/boot/zImage is ready [OHOS ERROR] multiple (or no) load addresses: [OHOS ERROR] This is incompatible with uImages [OHOS ERROR] Specify LOADADDR on the commandline to build an uImage [OHOS ERROR] arch/arm/boot/Makefile:90: recipe for target 'arch/arm/boot/uImage' failed [OHOS ERROR] make[2]: *** [arch/arm/boot/uImage] Error 1 [OHOS ERROR] arch/arm/Makefile:342: recipe for target 'uImage' failed [OHOS ERROR] make[1]: *** [uImage] Error 2 [OHOS ERROR] make[1]: Leaving directory '/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4' [OHOS ERROR] kernel.mk:74: recipe for target '/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage' failed [OHOS ERROR] make: *** [/home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/kernel/linux-5.4/arch/arm/boot/uImage] Error 2 [OHOS ERROR] you can check build log in /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board/build.log [OHOS ERROR] command: "/home/d1/openHarmony/t113/prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C /home/d1/openHarmony/t113/out/t113_nand_linux/xingyun_t113_nand_board" failed [OHOS ERROR] return code: 1 [OHOS ERROR] execution path: /home/d1/openHarmony/t113 然后修改如下文件kernel/linux/build/kernel.mk,修改内容如下 diff --git a/kernel/linux/build/kernel.mk b/kernel/linux/build/kernel.mk index 56fcde79ef..c8d8b41763 100644 --- a/kernel/linux/build/kernel.mk +++ b/kernel/linux/build/kernel.mk @@ -82,7 +82,11 @@ endif ifeq ( (DEVICEPATCHFILE)/bin/sh:/home/d1/openHarmony/t113/kernel/linux/patches/linux5.4/t113nandlinuxpatch/t113nandlinuxsmall.patch:Nosuchfileordirectory[OHOSERROR]kernel.mk:74:recipefortarget/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/kernel/linux5.4/arch/arm/boot/uImagefailed[OHOSERROR]make:[/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/kernel/linux5.4/arch/arm/boot/uImage]Error1hbbuildcp:cannotstat/home/d1/openHarmony/t113/kernel/linux/config/linux5.4/.:Nosuchfileordirectorykernel/linux/config/便linuxcplinux5.10linux5.4rkernel/linux/config/linux5.4/arch/arm/configsCantfinddefaultconfiguration"arch/arm/configs/t113nandlinuxsmalldefconfig"!,kernel/linux/linux5.4/arch/arm/configscpsun8iw20p1smpautonanddefconfig../../../../config/linux5.4/arch/arm/configs/t113nandlinuxsmalldefconfiguImageKernel:arch/arm/boot/zImageisready[OHOSERROR]multiple(orno)loadaddresses:[OHOSERROR]ThisisincompatiblewithuImages[OHOSERROR]SpecifyLOADADDRonthecommandlinetobuildanuImage[OHOSERROR]arch/arm/boot/Makefile:90:recipefortargetarch/arm/boot/uImagefailed[OHOSERROR]make[2]:[arch/arm/boot/uImage]Error1[OHOSERROR]arch/arm/Makefile:342:recipefortargetuImagefailed[OHOSERROR]make[1]:[uImage]Error2[OHOSERROR]make[1]:Leavingdirectory/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/kernel/linux5.4[OHOSERROR]kernel.mk:74:recipefortarget/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/kernel/linux5.4/arch/arm/boot/uImagefailed[OHOSERROR]make:[/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/kernel/linux5.4/arch/arm/boot/uImage]Error2[OHOSERROR]youcancheckbuildlogin/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard/build.log[OHOSERROR]command:"/home/d1/openHarmony/t113/prebuilts/buildtools/linuxx86/bin/ninjawdupbuild=warnC/home/d1/openHarmony/t113/out/t113nandlinux/xingyunt113nandboard"failed[OHOSERROR]returncode:1[OHOSERROR]executionpath:/home/d1/openHarmony/t113kernel/linux/build/kernel.mkdiffgita/kernel/linux/build/kernel.mkb/kernel/linux/build/kernel.mkindex56fcde79ef..c8d8b41763100644a/kernel/linux/build/kernel.mk+++b/kernel/linux/build/kernel.mk@@82,7+82,11@@endififeq((KERNEL_VERSION), linux-5.10)
$(hide) $(KERNEL_MAKE) -C ( K E R N E L S R C T M P P A T H ) A R C H = (KERNEL_SRC_TMP_PATH) ARCH= (KERNELSRCTMPPATH)ARCH=(KERNEL_ARCH) ( K E R N E L C R O S S C O M P I L E ) m o d u l e s p r e p a r e e n d i f + i f e q ( (KERNEL_CROSS_COMPILE) modules_prepare endif +ifeq ( (KERNELCROSSCOMPILE)modulesprepareendif+ifeq((DEVICE_NAME),t113_nand_linux)
+$(hide) $(KERNEL_MAKE) -C ( K E R N E L S R C T M P P A T H ) A R C H = (KERNEL_SRC_TMP_PATH) ARCH= (KERNELSRCTMPPATH)ARCH=(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 uImage LOADADDR=0x40008000
+else
$(hide) $(KERNEL_MAKE) -C ( K E R N E L S R C T M P P A T H ) A R C H = (KERNEL_SRC_TMP_PATH) ARCH= (KERNELSRCTMPPATH)ARCH=(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 uImage
endif
+endif
.PHONY: build-kernel
build-kernel: $(KERNEL_IMAGE_FILE)
主要是需要 在我们自己的内核编译过程中添加字段LOADADDR=0x40008000,然后重新进行编译,编译成功,结果如下图所示。说明初步添加内核到openharmony成功。
在这里插入图片描述

Logo

更多推荐