Ubuntu搭建鸿蒙命令行适配环境
在 Ubuntu (20.04+) 下搭建鸿蒙命令行适配环境是的方式。因为鸿蒙系统的编译环境本质上就是基于 Linux 的,很多在 Windows 下需要折腾的路径问题、依赖问题,在 Ubuntu 下都能直接避免。既然你是为了**“适配命令行工具”基于 NDK 的交叉编译环境**。在 Ubuntu (20.04+) 下搭建鸿蒙命令行适配环境是的方式。因为鸿蒙系统的编译环境本质上就是基于 Linux
在 Ubuntu (20.04+) 下搭建鸿蒙命令行适配环境是最原生、最推荐的方式。因为鸿蒙系统的编译环境本质上就是基于 Linux 的,很多在 Windows 下需要折腾的路径问题、依赖问题,在 Ubuntu 下都能直接避免。
既然是为了“适配命令行工具”(即把 Linux 软件移植到鸿蒙,或进行底层开发),需要搭建的是基于 NDK 的交叉编译环境。
目录
第二步:下载并配置鸿蒙 SDK (Command Line Tools)
第一步:安装基础依赖
虽然你是移植工具,不是编译整个系统,但基本的构建工具链是必须的。打开终端执行:
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 自带的)。
第五步:推送到设备运行
-
连接鸿蒙设备到电脑。
-
推送文件:
hdc file send ./main_ohos /data/local/tmp/ -
进入设备并运行:
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 权限问题。
-
查看 USB 设备 ID:运行
lsusb,找到华为设备(通常 Vendor ID 是12d1)。 -
添加 udev 规则:
sudo nano /etc/udev/rules.d/51-android.rules # 添加一行: SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" -
重启服务:
sudo udevadm control --reload-rules && sudo service udev restart -
拔插 USB 线即可。
Q: 移植复杂的开源软件(如 Redis, Nginx)怎么做?
A: 不要手动敲 clang 命令。大部分开源软件支持 CMake。需要创建一个 toolchain.cmake 文件,把上面的 --target 和 --sysroot 参数写进去,然后用 SDK 里自带的 cmake 来构建项目。
总结:
在 Ubuntu 上做适配是效率最高的。不需要虚拟机,不需要 WSL,文件系统也是原生兼容的。只要搞定 SDK 路径 和 USB 权限,就拥有了最强大的鸿蒙底层开发环境。
更多推荐




所有评论(0)