为鸿蒙PC交叉编译rust项目的通用化配置
·
为rust添加鸿蒙工具链
rustup target add aarch64-unknown-linux-ohos
安装鸿蒙sdk
- 安装鸿蒙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后一起放这了)
更多推荐



所有评论(0)