提示:简单环境编译

【Linux】【harmonyOs】【交叉编译】鸿蒙交叉编译环境搭建


前言

例如:鸿蒙交叉编译让我们的C/C++程序在鸿蒙系统运行。


一、环境准备

准备一个Ubuntu 20.04 环境,可以是服务器,也可以自己安装虚拟机。

二、环境配置

1. 下载鸿蒙交叉编译工具链

鸿蒙工具链获取地址

https://gitee.com/openharmony-sig/oh-inner-release-management/blob/master/Release-Testing-Version.md
我们来下载L2 标准系统的工具链
在这里插入图片描述

mkdir ohos_tools  # 在ubuntu环境新建一个目录放置交叉编译工具
cd ohos_tools  # 进入此目录
wget http://download.ci.openharmony.cn/version/Master_Version/OpenHarmony_4.0.10.5/20230824_120941/version-Master_Version-OpenHarmony_4.0.10.5-20230824_120941-ohos-sdk-full_monthly.tar.gz   # 下载对应链接的包
tar -xzvf version-Master_Version-OpenHarmony_4.0.10.5-20230824_120941-ohos-sdk-full_monthly.tar.gz      # 解压工具链

2. 解压native

  1. 进入解压得到 ohos_sdk 目录,可以看到 Linux 和 windows 两个平台的 SDK 目录,进入 linux。
  2. 进入之后使用如下命令解压 Linux 环境下的 OHOS SDK 工具包,得到对应的工具目录。由于我们是 c/c++ 库的编译,我们只关注 native 目录。
for i in *.zip;do unzip ${i};done

在这里插入图片描述

2. 配置环境变量(64位的配置)

export OHOS_SDK=/home/an/ohos_tools/ohos-sdk/linux # 此处是我的ohos_sdk解压目录,请替换为你自己的解压目录
export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"

打开配置文件,将如上所有配置,加入 .bashrc 文件的最后

sudo vi ~/.bashrc  

让配置文件生效

source ~/.bashrc

2. 验证环境是否OK

  1. 找个目录创建一个文件
touch main.c
  1. 写入如下内容
#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 10;
    int b = 20;
    printf("a + b = %d\n", a + b);
    return 0;
}
  1. 编译
    使用工具链编译出hello
$CC main.c -o hello

使用 file 命令查看如下图所示为ARM aarch64 说明环境已OK

file hello

在这里插入图片描述

将hello 推送到鸿蒙系统中,添加权限,可以执行成功。

总结

例如:先使用hello验证环境没问题,后面在进行库的编译。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐