为rust添加鸿蒙工具链

rustup target add aarch64-unknown-linux-ohos

安装鸿蒙sdk

在要编译的项目下配置cargo

在项目文件.cargo/config.toml, 注意替换自己的鸿蒙sdk位置

[target.aarch64-unknown-linux-ohos]
linker = "/home/ystyle/Code/ohos/command-line-tools/sdk/default/openharmony/native/llvm/bin/clang"
ar = "/home/ystyle/Code/ohos/command-line-tools/sdk/default/openharmony/native/llvm/bin/llvm-ar"
rustflags = [
    "-C", "link-arg=-target", "-C", "link-arg=aarch64-unknown-linux-ohos",
    "-C", "link-arg=--sysroot=/home/ystyle/Code/ohos/command-line-tools/sdk/default/openharmony/native/sysroot",
    "-C", "link-arg=-L/home/ystyle/Code/ohos/command-line-tools/sdk/default/openharmony/native/sysroot/usr/lib/aarch64-linux-ohos",
    "-C", "link-arg=-Wl,--allow-multiple-definition",
    "-C", "link-arg=-Wl,--undefined-version",
    "-C", "link-arg=-Wl,--defsym=__xpg_strerror_r=0",
]

构建

cargo build --target aarch64-unknown-linux-ohos --release

有些项目可能编译不过,可以使用禁止编译feature来跳过不兼容的模块,执行以下命令编译

cargo build --target aarch64-unknown-linux-ohos --no-default-features --release

比如这个是编译 starship 的,但可惜这个是自带的终端用不了, CodeArts IDE的终端倒是可以用

cargo build --target aarch64-unknown-linux-ohos --release --no-default-features -features battery

签名

以上交叉编译出来的,还要在鸿蒙PC上签名才能运行, 打开CodeArts IDE自带的终端,执行以下命令签名,然后复制到~/.local/bin/下并把~/.local/bin/添加到~/.zshrc的PATH里就可以正常使用了

binary-sign-tool sign -inFile "./rg" -outFile "./rg-signed" -selfSign 1

已经成功编译的常用命令

列几个我编译成功的

  • eza: 是ls的rust替代版本
  • fd: 是find命令的rust增强版本
  • rg: 是grep的rust增强版本
  • nu: 是nushell, 但目前只能在codearts里用, 终端修改shell, 在codeargs执行 sh ~/.local/bin/nu 就可以进入nushell了
  • starship: 终端美化,但目前zsh用不了, nushell里可以用
  • zoxide: 智能化的cd, zsh用不了,因zsh缺少模块. nushell里可以用

打包下载地址: https://gitcode.com/ystyle/neovim-harmonyos/releases/build-20251220
(之前移植neovim后一起放这了)

Logo

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

更多推荐