[开发者活动] Dayu210鸿蒙标准系统可执行demo独立编译介绍 原创

润开鸿_闻飞 显示全部楼层 发表于 2025-2-10 15:02:32

鸿蒙的可执行程序通常是基于鸿蒙源码框架进行编译,但是有时候我们需要编译一些很简单的测试demo,放在鸿蒙框架中编译则会很慢,所以我们可以将鸿蒙的编译文件命令整理出来单独编译。

本文档是基于dayu210(aarch64架构)梳理的快速编译介绍。

一、准备工具

1.1 创建目录ohos_build

该目录用于设置独立编译的配置

mkdir ohos_build
cd ohos_build
mkdir musl

1.2 llvm工具链

鸿蒙的llvm工具链位于prebuilts/clang/ohos/linux-x86_64/llvm路径下,将其拷贝到ohos_build目录内。

cp -rf prebuilts/clang/ohos/linux-x86_64/llvm ~/ohos_build

1.3 musl库准备

将基于dayu210产品编译好的musl库拷贝到ohos_build下,编译成功的musl库文件位于out/rk3588/obj/third_party/musl路径下。

cp -rf out/rk3588/obj/third_party/musl/usr ~/ohos_build/musl/

二、创建编译脚本build.sh

创建编译脚本build.sh内容如下。

#!/bin/bash

set -e

SRC_FILE=$1
if [[ ${SRC_FILE} == "" ]]; then
    SRC_FILE=./demo/demo.c
elif [[ -d ${SRC_FILE} ]]; then
    tmp_path=${SRC_FILE}
    SRC_FILE=""
    for file in ${tmp_path}/*.c; do
        temp_file=`basename $file`
        SRC_FILE="${SRC_FILE} ${tmp_path}/${temp_file}"
    done
elif [[ -f ${SRC_FILE} && "${SRC_FILE##*.}"x = "c"x ]]; then
    SRC_FILE=${SRC_FILE}
else
    echo "Unknow source file: $1"
    exit 1
fi

DST_FILE=$2
if [[ ${DST_FILE} == "" ]]; then
    DST_FILE=./demo_test
fi

CLANG=./llvm/bin/clang
CFLAGS="-D__MUSL__ -Xclang -mllvm -Xclang -instcombine-lower-dbg-declare=0 -mfloat-abi=hard"
MUSL_PATH="./musl"
TARGET_ARCH="aarch64-linux-ohos"

${CLANG} ${CFLAGS} -I${MUSL_PATH}/usr/include/${TARGET_ARCH} --target=${TARGET_ARCH} -march=armv8-a --sysroot=${MUSL_PATH} ${SRC_FILE} -o ${DST_FILE}

echo "编译成功的可执行文件位于: ${DST_FILE}"

三、build.sh编译脚本功能介绍

本编译脚本支持默认编译、单独文件编译、指定目录下多文件编译三种功能以及指定输出编译结果。

3.1 默认编译

默认编译的时候将要写的测试用例保存在ohos_build/demo目录下,测试用例命名为demo.c,当我们运行脚本不添加参数时默认编译的源代码文件为demo/demo.c,输出的文件为demo_test。

编译命令如下:

./build.sh

3.2 单独文件编译

build.sh编译脚本的第一个参数便是指定编译文件的路径,最好是绝对路径,源码必须是c文件且文件存在;第二个参数是输出文件名,可以省略,默认值为demo_test。

参考编译示例如下:

./build.sh demo/demo.c demo_test

3.3 指定目录下多文件编译

build.sh编译脚本的第一个参数便是指定编译源码目录的路径,最好是绝对路径,源码必须全部是c文件且只能有一个main函数;第二个参数是输出文件名,可以省略,默认值为demo_test。

参考编译示例如下:

./build.sh multi_files multi_files_test

3.4 指定输出编译结果

build.sh编译脚本的第二个参数是输出文件名,可以省略,默认值为demo_test,如果源码文件或路径省略则输出结果文件名必须省略,不然只会当作源码文件处理。

四、配置好的源码仓介绍

按照上述介绍配置好的环境代码仓位于https://gitee.com/itopen/ohos_build.git,同时提供了demo和multi_files的样例,可以直接使用。

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2025  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部