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库来方便处理相关的接口
评论区
写评论Windows能避开就避开