OpenHarmony开发者论坛
标题:
Dayu210鸿蒙标准系统可执行demo独立编译介绍
[打印本页]
作者:
润开鸿_闻飞
时间:
2025-2-10 15:02
标题:
Dayu210鸿蒙标准系统可执行demo独立编译介绍
[md]鸿蒙的可执行程序通常是基于鸿蒙源码框架进行编译,但是有时候我们需要编译一些很简单的测试demo,放在鸿蒙框架中编译则会很慢,所以我们可以将鸿蒙的编译文件命令整理出来单独编译。
本文档是基于dayu210(aarch64架构)梳理的快速编译介绍。
## 一、准备工具
### 1.1 创建目录ohos_build
该目录用于设置独立编译的配置
```shell
mkdir ohos_build
cd ohos_build
mkdir musl
```
### 1.2 llvm工具链
鸿蒙的llvm工具链位于prebuilts/clang/ohos/linux-x86_64/llvm路径下,将其拷贝到ohos_build目录内。
```shell
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路径下。
```shell
cp -rf out/rk3588/obj/third_party/musl/usr ~/ohos_build/musl/
```
## 二、创建编译脚本build.sh
创建编译脚本build.sh内容如下。
```shell
#!/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。
编译命令如下:
```shell
./build.sh
```
### 3.2 单独文件编译
build.sh编译脚本的第一个参数便是指定编译文件的路径,最好是绝对路径,源码必须是c文件且文件存在;第二个参数是输出文件名,可以省略,默认值为demo_test。
参考编译示例如下:
```shell
./build.sh demo/demo.c demo_test
```
### 3.3 指定目录下多文件编译
build.sh编译脚本的第一个参数便是指定编译源码目录的路径,最好是绝对路径,源码必须全部是c文件且只能有一个main函数;第二个参数是输出文件名,可以省略,默认值为demo_test。
参考编译示例如下:
```shell
./build.sh multi_files multi_files_test
```
### 3.4 指定输出编译结果
build.sh编译脚本的第二个参数是输出文件名,可以省略,默认值为demo_test,如果源码文件或路径省略则输出结果文件名必须省略,不然只会当作源码文件处理。
## 四、配置好的源码仓介绍
按照上述介绍配置好的环境代码仓位于[
https://gitee.com/itopen/ohos_build.git
](
https://gitee.com/itopen/ohos_build.git
),同时提供了demo和multi_files的样例,可以直接使用。
```
```
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5