本系列文章将深入探讨鸿蒙 PC 在文件系统、应用沙箱以及代码签名等层面的底层技术细节。在讨论技术细节之前,我们需要先掌握这项最基础的技能:如何在鸿蒙 PC 本地环境下编译并运行一个简单的 C/C++ 程序。

这是后续所有实验的“入场券”,也是熟悉鸿蒙 PC 独特运行机制的第一步。

1. 准备工作:获取 ohos-sdk

在鸿蒙生态中,ohos-sdk (OpenHarmony SDK) 是所有底层开发的基石。它包含了定制化的 LLVM 编译器、sysroot 以及必要的签名工具。建议将 SDK 安装在用户家目录下(/storage/Users/currentUser)。

请打开 HiShell,执行以下命令:

# 1. 从 OpenHarmony 官方流水线下载 ohos-sdk
curl -fL -o ohos-sdk-public_ohos.tar.gz https://cidownload.openharmony.cn/version/Master_Version/ohos-sdk-public_ohos/20260330_020501/version-Master_Version-ohos-sdk-public_ohos-20260330_020501-ohos-sdk-public_ohos.tar.gz

# 2. 解压并组织目录结构
mkdir -p ~/ohos-sdk
tar -zxf ohos-sdk-public_ohos.tar.gz -C ~/ohos-sdk
cd ~/ohos-sdk/ohos

# 3. 解压核心的 native 和 toolchains 软件包
unzip -uq native-*.zip
unzip -uq toolchains-*.zip
cd -

# 4. 将编译器与签名工具路径加入 PATH 环境变量
export PATH=~/ohos-sdk/ohos/native/llvm/bin:~/ohos-sdk/ohos/toolchains/lib:$PATH

2. 编写与编译程序

创建一个简单的测试程序 my_program.c

#include <stdio.h>

int main() {
    printf("Hello, HongMeng PC!\n");
    return 0;
}

使用 SDK 中的 clang 进行编译:

clang my_program.c -o my_program

3. 核心步骤:代码签名

如果你此时直接执行 ./my_program,系统会报错:

zsh: ./my_program: permission denied

这是因为 鸿蒙 PC 会强制校验二进制文件的代码签名。未经签名的 ELF 文件会被系统拦截。

我们需要使用 SDK 里的 binary-sign-tool 进行签名:

binary-sign-tool sign -selfSign 1 -inFile my_program -outFile my_program

4. 运行验证

签名完成后,程序即可成功运行:

./my_program
# 输出:Hello, HongMeng PC!
Logo

赋能鸿蒙PC开发者,共建全场景原生生态,共享一次开发多端部署创新价值。

更多推荐