本文用于指导 Rust 语言开发者编译构建 OpenHarmony OS Rust 应用程序。
Rust 是一门静态强类型语言,具有更安全的内存管理、更好的运行性能、原生支持多线程开发等优势。
本工具链基于开源 rust 与 llvm 增量开发,适配了 OpenHarmony OS target 二进制构建。可将 rust 源码编译成能在 OpenHarmony OS 设备上使用的目标二进制。
下载或更新环境中 OpenHarmony 社区代码,下载方式可参考获取源码。
执行源码中脚本下载安装工具链。
./build/prebuilts_download.sh
准备待编译代码。
创建 build/rust/tests/test_bin_crate 目录,目录下新建如下所示文件与文件夹。
├── BUILD.gn
└── src
└── main.rs
main.rs 代码示例。
//! Hello world example for Rust.
fn main() {
println!("Hello, world!");
println!(env!("RUSTENV_TEST"));
}
BUILD.gn 代码示例。
import("//build/ohos.gni")
ohos_rust_executable("test_bin_crate") {
sources = [ "src/main.rs" ]
rustenv = [ "RUSTENV_TEST=123" ]
features = [ "std" ]
if (is_mingw) {
rust_static_link = true
}
}
执行编译命令。
./build.sh --product-name {product_name} --build-target
以RK3568为例,若要编译,请执行如下命令。
./build.sh --product-name rk3568 --build-target build/rust/tests/test_bin_crate:test_bin_crate –no-prebuilt-sdk
编译生成的文件。
./out/rk3568/build/build_framework/test_bin_crate
下载 build 仓代码。
git clone git@gitee.com:openharmony/build.git
执行脚本下载安装工具链。
./build/prebuilts_download.sh
查看安装情况。
./prebuilts/rustc/linux-x86_64/current/bin/rustc --version
有类似如下显示表示安装成功。
rustc 1.72.0-nightly (xxxx)
说明
用于在 Linux x86 环境下进行 OpenHarmony OS 的 target 交叉编译,不编译 OpenHarmony OS target 可不安装。
在 OpenHarmony 的最新版本说明中获取 SDK 包下载路径
选择 Linux 环境 SDK 包下载,依次解压下载的压缩包。
mv ohos-sdk-windows_linux-public.tar.gz /opt/
cd /opt/
tar -zxvf ohos-sdk-windows_linux-public.tar.gz
cd ohos-sdk/linux
unzip native-linux-x64-4.1.7.5-Release.zip
代码用例main.rs。
fn main() {
println!("hello world");
}
编译 target 为本地环境时命令示例。
./prebuilts/rustc/linux-x86_64/current/bin/rustc main.rs
执行构建结果。
./main
hello world
编译 target 为 armv7-unknown-linux-ohos时命令示例。
./prebuilts/rustc/linux-x86_64/current/bin/rustc main.rs --target=armv7-unknown-linux-ohos -C linker=/opt/ohos-sdk/linux/native/llvm/bin/armv7-unknown-linux-ohos-clang
编译 target 为 aarch64-unknown-linux-ohos时命令示例。
./prebuilts/rustc/linux-x86_64/current/bin/rustc main.rs --target=aarch64-unknown-linux-ohos -C linker=/opt/ohos-sdk/linux/native/llvm/bin/aarch64-unknown-linux-ohos-clang
编译 target 为 x86_64-unknown-linux-ohos时命令示例。
./prebuilts/rustc/linux-x86_64/current/bin/rustc main.rs --target=x86_64-unknown-linux-ohos -C linker=/opt/ohos-sdk/linux/native/llvm/bin/x86_64-unknown-linux-ohos-clang
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。