< 返回版块

huangjj27 发表于 2021-04-22 00:06

Rust 交叉编译到 安卓的 二三事

我的一个朋友在周末的时候尝试着在 windows 系统下面编译 aleaf 库,然而编译的时候遇到了 Rust bindgen 找不到 clang 的问题,最后尝试重新编译 llvm 的时候发现问题在于:llvm 在 Linux 下和 Windows 下的编译过程有差异,在 Linux 上 llvm 在 stage1 上编译出 libclang 并在 stage2 依赖这个库,而在 Windows 下直接跳过 stage1 进行 stage2 的编译,因此没有编译出 libclang可用

关于这个问题,更多详见:https://stackoverflow.com/questions/67150514/how-to-use-isysroot-of-clang-properly

顺带一提:朋友直接在 Linux 上编译一遍过(Linux 才是生产力!)

aleaf,NDK

既然上面说到 aleaf,这个应用为什么会变得如此麻烦呢? 原因在于,这个库的依赖顺序是: rust business code -> rust bindgen -> c wrapper -> android ndk c API

然而通常如果利用 Rust 开发安卓库,我们会采用的路径是直接通过调用 NDK库来方便处理相关的接口

评论区

写评论
rustdesk 2021-04-22 16:05

Windows能避开就避开

1 共 1 条评论, 1 页