Skip to content

Failed to compile to aarch64-linux-android. #435

@xuxiaocheng0201

Description

@xuxiaocheng0201

The error is:

[rquickjs-sys 0.9.0] cargo:rerun-if-changed=build.rs
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_BINDGEN
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_UPDATE_BINDINGS
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_BYTECODE
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_GC
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_GC_FREE
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_FREE
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_LEAKS
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_MEM
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_OBJECTS
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_ATOMS
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_SHAPES
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_MODULE_RESOLVE
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_PROMISE
[rquickjs-sys 0.9.0] cargo:rerun-if-env-changed=CARGO_FEATURE_DUMP_READ_OBJECT
[rquickjs-sys 0.9.0] Ubuntu clang version 18.1.3 (1ubuntu1)
[rquickjs-sys 0.9.0] Target: aarch64-unknown-linux-android
[rquickjs-sys 0.9.0] Thread model: posix
[rquickjs-sys 0.9.0] InstalledDir: 
[rquickjs-sys 0.9.0] ignoring nonexistent directory "/include"
[rquickjs-sys 0.9.0] ignoring duplicate directory "/usr/include/clang/18.1.3/include"
[rquickjs-sys 0.9.0] ignoring duplicate directory "/usr/local/include"
[rquickjs-sys 0.9.0] ignoring duplicate directory "/usr/include"
[rquickjs-sys 0.9.0] #include "..." search starts here:
[rquickjs-sys 0.9.0] #include <...> search starts here:
[rquickjs-sys 0.9.0]  /usr/lib/llvm-18/lib/clang/18/include
[rquickjs-sys 0.9.0]  /usr/local/include
[rquickjs-sys 0.9.0]  /usr/include
[rquickjs-sys 0.9.0] End of search list.
[rquickjs-sys 0.9.0] /usr/include/stdio.h:28:10: fatal error: 'bits/libc-header-start.h' file not found
[rquickjs-sys 0.9.0] 
[rquickjs-sys 0.9.0] thread 'main' panicked at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rquickjs-sys-0.9.0/build.rs:311:39:
[rquickjs-sys 0.9.0] Unable to generate bindings: ClangDiagnostic("/usr/include/stdio.h:28:10: fatal error: 'bits/libc-header-start.h' file not found\n")
[rquickjs-sys 0.9.0] stack backtrace:
[rquickjs-sys 0.9.0]    0: rust_begin_unwind
[rquickjs-sys 0.9.0]    1: core::panicking::panic_fmt
[rquickjs-sys 0.9.0]    2: core::result::unwrap_failed
[rquickjs-sys 0.9.0]    3: core::result::Result<T,E>::expect
[rquickjs-sys 0.9.0]    4: build_script_build::bindgen
[rquickjs-sys 0.9.0]    5: build_script_build::main
[rquickjs-sys 0.9.0]    6: core::ops::function::FnOnce::call_once
[rquickjs-sys 0.9.0] note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: failed to run custom build command for `rquickjs-sys v0.9.0`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

And I searched Github, the only relevant one is georust/gdal#574 (comment) .It mentioned maybe it's picking up the wrong sysroot.. But I wonder how to fix it.

The step to produce is very simple:
Cargo.toml:

[target.'cfg(target_os = "android")'.dependencies]
rquickjs = { version = "~0.9", features = ["bindgen"] }

.github/workflows/ci.yml:

name: Build Release
on:
  push:
    branch:
      - master
jobs:
  build-android:
    name: Build android-arm64
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 1
      - name: Check rust version
        run: rustup --version
      - name: Install target
        run: rustup target add aarch64-linux-android
      - name: Install ndk
        run: cargo install cargo-ndk
      - name: Build release
        run: cargo ndk --target arm64-v8a --platform 28 build -vv --release
        env:
          RUST_BACKTRACE: 1

I created an example repository: xuxiaocheng0201/example-rquickjs-android.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions