在 Ubuntu (20.04+) 下搭建鸿蒙命令行适配环境是最原生、最推荐的方式。因为鸿蒙系统的编译环境本质上就是基于 Linux 的,很多在 Windows 下需要折腾的路径问题、依赖问题,在 Ubuntu 下都能直接避免。

既然是为了“适配命令行工具”(即把 Linux 软件移植到鸿蒙,或进行底层开发),需要搭建的是基于 NDK 的交叉编译环境

目录

第一步:安装基础依赖

第二步:下载并配置鸿蒙 SDK (Command Line Tools)

1. 准备工作:建立目录与安装依赖

2. 下载 SDK 包 (核心步骤)

3. 解压并整理文件

4. 配置环境变量 (永久生效)

第三步:验证环境

测试 hdc:

测试编译器:

如果遇到问题:

第四步:实战——如何做“命令行适配”

第五步:推送到设备运行

常见坑点 (FAQ)


第一步:安装基础依赖

虽然你是移植工具,不是编译整个系统,但基本的构建工具链是必须的。打开终端执行:

sudo apt update
sudo apt install -y build-essential git wget curl python3 python3-pip cmake ninja-build

第二步:下载并配置鸿蒙 SDK (Command Line Tools)

由于鸿蒙(OpenHarmony/HarmonyOS)的下载链接常更新,最稳妥的方式是通过命令行直接拉取华为/OpenHarmony 的官方镜像源

以下是命令行操作流程,可以直接复制到终端运行:

1. 准备工作:建立目录与安装依赖

为了避免文件散乱,先创建一个专用目录,并安装解压和编译所需的系统库。

# 1. 更新软件源并安装基础依赖 (Ubuntu 20.04+ 必备)
sudo apt update
sudo apt install -y wget curl unzip tar git build-essential libncurses5

# 2. 创建存放鸿蒙 SDK 的目录
mkdir -p ~/harmonyos-sdk
cd ~/harmonyos-sdk
2. 下载 SDK 包 (核心步骤)

对于做命令行适配(移植 Linux 软件),你需要的是 Public SDK(包含 toolchains 和 native)。

这里以 OpenHarmony 4.1 Release(稳定版)为例,这是目前兼容性较好的版本。

注:如下载速度慢,请确保网络通畅或替换为最新的版本号链接。

# 下载 OpenHarmony 4.1 Release 的 Linux SDK 包
wget https://repo.huaweicloud.com/openharmony/os/4.1-Release/ohos-sdk-linux-public.tar.gz

# 如果你需要最新的 5.0 Beta 版本,可以将链接中的 4.1-Release 替换为 5.0-Beta1
3. 解压并整理文件

下载下来的包通常是多层压缩的,需要按顺序解压。

# 1. 解压主包
tar -zxvf ohos-sdk-linux-public.tar.gz

# 2. 解压后的目录里通常有多个 zip 包,我们需要解压 'native' (编译器) 和 'toolchains' (hdc)
# 注意:文件名版本号可能略有不同,用通配符 * 匹配最方便
unzip -o *native-linux-*.zip -d ./native
unzip -o *toolchains-linux-*.zip -d ./toolchains

# 3. (可选) 清理压缩包以节省空间
rm *.zip *.tar.gz
4. 配置环境变量 (永久生效)

如果不配置环境变量,你每次都得输入长路径才能运行命令。

# 1. 打开环境变量配置文件
nano ~/.bashrc

# 2. === 请将以下内容复制粘贴到文件末尾 ===

# --- HarmonyOS SDK Config Start ---
export OHOS_SDK_HOME=$HOME/harmonyos-sdk

# 添加 hdc 工具 (用于连接设备)
export PATH=$OHOS_SDK_HOME/toolchains:$PATH

# 添加 Native 编译器 (clang/cmake, 用于移植软件)
export PATH=$OHOS_SDK_HOME/native/build-tools/cmake/bin:$PATH
# 注意:LLVM 路径可能随版本变化,通常如下
export PATH=$OHOS_SDK_HOME/native/llvm/bin:$PATH
# --- HarmonyOS SDK Config End ---

# 3. 按 Ctrl+O 回车保存,按 Ctrl+X 退出 nano

第三步:验证环境

# 1. 使配置生效
source ~/.bashrc

# 2. 验证 hdc (调试工具)
# 如果输出 "HarmonyOS Device Connector..." 说明成功
hdc --version

# 3. 验证编译器 (适配工具)
# 如果输出 "Huawei Technologies..." 或 "clang version..." 说明成功
clang --version
测试 hdc:

输入 hdc help。如果有输出,说明工具安装成功。

注意: Linux 下默认权限可能导致无法识别 USB 设备,如果 hdc list targets 找不到设备,需要配置 USB 规则(见文末 FAQ)。

测试编译器:

输入 clang --version。如果显示 Huawei 或 OpenHarmony 相关的版本信息,说明环境 OK。

让配置立即生效并检查是否成功。

如果遇到问题:
  • 报错 hdc: error while loading shared libraries: libncurses.so.5:

    这是因为 Ubuntu 20.04+ 默认用的是 libncurses6,而旧版工具链可能依赖 5。

    解决: sudo apt install libncurses5

  • 找不到 clang:

    进入 ~/harmonyos-sdk/native 目录看一眼,如果目录结构是 native/llvm/bin,确认路径是否配对。有些版本可能是 native/build/llvm/bin。

完成这一步后,你就拥有了一个完整的鸿蒙命令行适配环境,既可以用 hdc shell 调试设备,也可以用 clang 编译移植 Linux 软件了。


第四步:实战——如何做“命令行适配”

核心在于交叉编译。要在 x86 的 Ubuntu 上,编译出能在 ARM 架构(鸿蒙手机/平板)或 鸿蒙 PC 上运行的程序。

假设要移植一个简单的 C 程序 main.c

#include <stdio.h>
int main() {
    printf("Hello HarmonyOS from Ubuntu!\n");
    return 0;
}

编译命令(关键):

需要告诉编译器目标架构(Target)和系统根路径(Sysroot)。

# 假设目标设备是 ARM64 (目前绝大多数鸿蒙设备)
clang \
    --target=aarch64-linux-ohos \
    --sysroot=$OHOS_SDK_HOME/native/sysroot \
    -D__MUSL__ \
    main.c -o main_ohos
  • --target=aarch64-linux-ohos: 指定编译给 64位 ARM 鸿蒙系统用。

  • --sysroot: 告诉编译器去哪里找鸿蒙的头文件和库(而不是用 Ubuntu 自带的)。

第五步:推送到设备运行

  1. 连接鸿蒙设备到电脑。

  2. 推送文件:

    hdc file send ./main_ohos /data/local/tmp/
    
  3. 进入设备并运行:

    hdc shell
    # 在设备终端内
    chmod +x /data/local/tmp/main_ohos
    /data/local/tmp/main_ohos
    

    如果看到 "Hello HarmonyOS from Ubuntu!",那恭喜,你已经完成了最基础的命令行适配!


常见坑点 (FAQ)

Q: hdc 找不到设备 (Empty list) 怎么办?

A: Ubuntu 的 USB 权限问题。

  1. 查看 USB 设备 ID:运行 lsusb,找到华为设备(通常 Vendor ID 是 12d1)。

  2. 添加 udev 规则:

    sudo nano /etc/udev/rules.d/51-android.rules
    # 添加一行:
    SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
    
  3. 重启服务:sudo udevadm control --reload-rules && sudo service udev restart

  4. 拔插 USB 线即可。

Q: 移植复杂的开源软件(如 Redis, Nginx)怎么做?

A: 不要手动敲 clang 命令。大部分开源软件支持 CMake。需要创建一个 toolchain.cmake 文件,把上面的 --target 和 --sysroot 参数写进去,然后用 SDK 里自带的 cmake 来构建项目。

总结:

在 Ubuntu 上做适配是效率最高的。不需要虚拟机,不需要 WSL,文件系统也是原生兼容的。只要搞定 SDK 路径 和 USB 权限,就拥有了最强大的鸿蒙底层开发环境。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐