查看: 372|回复: 2

Dayu210鸿蒙标准系统可执行demo独立编译介绍

[复制链接]

3

主题

1

回帖

20

积分

新手上路

积分
20
发表于 2025-4-13 08:11:09 | 显示全部楼层 |阅读模式
鸿蒙的可执行程序通常是基于鸿蒙源码框架进行编译,但是有时候我们需要编译一些很简单的测试demo,放在鸿蒙框架中编译则会很慢,所以我们可以将鸿蒙的编译文件命令整理出来单独编译。
本文档是基于dayu210(aarch64架构)梳理的快速编译介绍。
一、准备工具

1.1 创建目录ohos_build

该目录用于设置独立编译的配置
  1. mkdir ohos_build
  2. cd ohos_build
  3. mkdir musl
复制代码
1.2 llvm工具链

鸿蒙的llvm工具链位于prebuilts/clang/ohos/linux-x86_64/llvm路径下,将其拷贝到ohos_build目录内。
  1. 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路径下。
  1. cp -rf out/rk3588/obj/third_party/musl/usr ~/ohos_build/musl/
复制代码
二、创建编译脚本build.sh

创建编译脚本build.sh内容如下。
  1. #!/bin/bash
  2. set -e
  3. SRC_FILE=$1
  4. if [[ ${SRC_FILE} == "" ]]; then
  5.     SRC_FILE=./demo/demo.c
  6. elif [[ -d ${SRC_FILE} ]]; then
  7.     tmp_path=${SRC_FILE}
  8.     SRC_FILE=""
  9.     for file in ${tmp_path}/*.c; do
  10.         temp_file=`basename $file`
  11.         SRC_FILE="${SRC_FILE} ${tmp_path}/${temp_file}"
  12.     done
  13. elif [[ -f ${SRC_FILE} && "${SRC_FILE##*.}"x = "c"x ]]; then
  14.     SRC_FILE=${SRC_FILE}
  15. else
  16.     echo "Unknow source file: $1"
  17.     exit 1
  18. fi
  19. DST_FILE=$2
  20. if [[ ${DST_FILE} == "" ]]; then
  21.     DST_FILE=./demo_test
  22. fi
  23. CLANG=./llvm/bin/clang
  24. CFLAGS="-D__MUSL__ -Xclang -mllvm -Xclang -instcombine-lower-dbg-declare=0 -mfloat-abi=hard"
  25. MUSL_PATH="./musl"
  26. TARGET_ARCH="aarch64-linux-ohos"
  27. ${CLANG} ${CFLAGS} -I${MUSL_PATH}/usr/include/${TARGET_ARCH} --target=${TARGET_ARCH} -march=armv8-a --sysroot=${MUSL_PATH} ${SRC_FILE} -o ${DST_FILE}
  28. echo "编译成功的可执行文件位于: ${DST_FILE}"
复制代码
三、build.sh编译脚本功能介绍

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

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

build.sh编译脚本的第一个参数便是指定编译文件的路径,最好是绝对路径,源码必须是c文件且文件存在;第二个参数是输出文件名,可以省略,默认值为demo_test。
参考编译示例如下:
  1. ./build.sh demo/demo.c demo_test
复制代码
3.3 指定目录下多文件编译

build.sh编译脚本的第一个参数便是指定编译源码目录的路径,最好是绝对路径,源码必须全部是c文件且只能有一个main函数;第二个参数是输出文件名,可以省略,默认值为demo_test。
参考编译示例如下:
  1. ./build.sh multi_files multi_files_test
复制代码
3.4 指定输出编译结果

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

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

0

主题

382

回帖

804

积分

高级会员

积分
804
发表于 2025-8-5 21:13:08 | 显示全部楼层
http://tuchkas.ru/

92

主题

418

回帖

1202

积分

金牌会员

积分
1202
发表于 4 小时前 | 显示全部楼层
In reply to the guy talking about daftar game online slot, semua situs slot online, judi togel singapore online, agen slot online resmi, abc slot live, daftar angka sgp, judi online terbaik, toto online terpercaya, keluaran hk, slot togel 4d, menang judi togel, tentang judi slot online,  I highly recommend this agree with on asian toto casino site or withdraw sgp hari ini, situs live slot, situs slot deposit pakai dana, slot online mudah menang, game judi online terpercaya, slot judi slot, bola net slot, situs togel terbaik di indonesia, bermain togel, e slot, toto togel slot login, game slot live, alongside all this sell on asian toto casino details not to mention rekomendasi bandar togel terpercaya, daftar togel resmi, situs judi dana, web judi online, togel keluaran singapura, casino slot online, www togel singapore, judi resmi, agen slot terbaru, game togel, data result sgp, situs togel diskon terbesar, as well as this her explanation for Asian Toto Casino link which is also great. Also, have a look at this this post about asian toto casino advice as well as situs online terbaik, situs judi slot indonesia, link slot idn, situs poker idn terpercaya, games judi slot online, keluaran togel singapura hari ini, togel sgp hari ini, idn poker online, main slot menang, permainan togel slot, provider slot online, situs casino online terpercaya, not to mention this had me going on asian toto casino advice not forgetting sites such as sports slot, pola bermain slot pragmatic, bonus casino online, permainan kami, situs slot judi,  learn more here on not forgetting sites such as deposit slot pulsa, bo slot online, judi togel 4d, togel yang, slot indonesia online,  and i loved this for for good measure. Check more @ Awesome Asian Toto Casino Site 48deb64
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表