无法生成绑定:ClangDiagnostic(“src/mobile/wrapper.h:5:14:致命错误:'android/log.h'文件未找到

问题描述 投票:0回答:1

我使用rust编译Android so库,但是报错。错误内容如下:

Caused by:
process didn't exit successfully: /home/adrian/code/leaf/target/release/build/leaf-2b83f3edfbf0264d/build-script-build (exit status: 101)
--- stdout
cargo:rerun-if-changed=src/mobile/wrapper.h
cargo:rerun-if-env-changed=TARGET
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64-linux-android
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64_linux_android
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS
--- stderr
src/mobile/wrapper.h:5:14: fatal error: 'android/log.h' file not found
thread 'main' panicked at leaf/build.rs:37:10:
Unable to generate bindings: ClangDiagnostic("src/mobile/wrapper.h:5:14: fatal error: 'android/log.h' file not found\n")
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...```

### my command is as follows:
```export ANDROID_NDK=/home/adrian/code/leaf/android-ndk-r26b
export CC=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android34-clang
export AR=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
cargo build -p leaf-ffi --target x86_64-linux-android --release```
cross-compiling
1个回答
0
投票

我刚刚在我的项目中解决了这个问题。您遇到这个问题是因为它涉及到交叉编译时需要额外配置的

rust-bindgen
https://docs.rs/bindgen/latest/bindgen/struct.Builder.html#clang-arguments)。

基本上,确保

$ANDROID_NDK
环境变量设置正确并设置
BINDGEN_EXTRA_CLANG_ARGS="--sysroot=/path/to/your/ndk/sysroot"

© www.soinside.com 2019 - 2024. All rights reserved.