Cross-compiling from Macos to Android as cdylib

I created an empty project.

Cargo.toml:

[package]
name = "tester"
version = "0.1.0"
edition = "2021"

[dependencies]

[lib]
crate-type = ["cdylib"]

and nothing in src/lib.rs.

Then run cargo build --target aarch64-linux-android. But the build fails.

Output:

   Compiling tester v0.1.0 (/Users/xuxiaocheng/Rust/tester)
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/Users/xuxiaocheng/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Users/xuxiaocheng/Applications/flutter/bin:/Users/xuxiaocheng/.cargo/bin:/Users/xuxiaocheng/.gem/bin:/Library/Java/JavaVirtualMachines/graalvm-jdk-17.0.12+8.1/Contents/Home/bin:/opt/homebrew/bin/:/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin/python3:/opt/homebrew/opt/python@3.12/libexec/bin:/Users/xuxiaocheng/Library/Android/sdk/ndk/27.1.12297006/toolchains/llvm/prebuilt/darwin-x86_64/bin" VSLANG="1033" "cc" "-Wl,--version-script=/var/folders/_w/y4dz37394kq6ck56xzqcp6d40000gn/T/rustc5tuFrj/list" "-Wl,--no-undefined-version" "/var/folders/_w/y4dz37394kq6ck56xzqcp6d40000gn/T/rustc5tuFrj/symbols.o" "/Users/xuxiaocheng/Rust/tester/target/aarch64-linux-android/debug/deps/tester.5djz5k38o8x91o89ggrtwpou7.rcgu.o" "/Users/xuxiaocheng/Rust/tester/target/aarch64-linux-android/debug/deps/tester.bcydx6s58xgy3k95n9v36qcjs.rcgu.o" "-Wl,--as-needed" "-L" "/Users/xuxiaocheng/Rust/tester/target/aarch64-linux-android/debug/deps" "-L" "/Users/xuxiaocheng/Rust/tester/target/debug/deps" "-L" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib" "-Wl,-Bstatic" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libstd-cd8cf752a443bb6b.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libpanic_unwind-0d188503c29d25d4.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libobject-87dfb59ed1d0e844.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libmemchr-f6a3cc7440d6c389.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libaddr2line-b1ed2427e48dbda9.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libgimli-d1389e4793ad1141.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/librustc_demangle-5219845fa558113e.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libstd_detect-df91b4e11ae96982.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libhashbrown-85a1f3a80782dd9e.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/librustc_std_workspace_alloc-4a3efcd274d5e091.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libminiz_oxide-8efdf77349e945dd.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libadler-cdaccf425c783b3b.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libunwind-a17e367fa3c7c2a0.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libcfg_if-368aea0b000bf3b5.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/liblibc-fb769c14a5a63149.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/liballoc-a768099b441d9b42.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/librustc_std_workspace_core-0ef962ff48c5f202.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libcore-40ed66a75889e813.rlib" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib/libcompiler_builtins-629edfb390a8f42e.rlib" "-Wl,-Bdynamic" "-ldl" "-llog" "-lunwind" "-ldl" "-lm" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/Users/xuxiaocheng/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-linux-android/lib" "-o" "/Users/xuxiaocheng/Rust/tester/target/aarch64-linux-android/debug/deps/libtester.so" "-Wl,--gc-sections" "-shared" "-Wl,-soname=libtester.so" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
  = note: ld: unknown options: --version-script=/var/folders/_w/y4dz37394kq6ck56xzqcp6d40000gn/T/rustc5tuFrj/list --no-undefined-version --as-needed -Bstatic -Bdynamic --eh-frame-hdr -z --gc-sections -soname=libtester.so -z -z 
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          

error: could not compile `tester` (lib) due to 1 previous error

But as staticlib it successes.

Which toolchain or configuration did I miss?

Host: aarch64-apple-darwin.
Target: aarch64-linux-android
Rustup version: rustup 1.27.1 (54dd3d00f 2024-04-24)
Rustc version: rustc 1.81.0 (eeb90cda1 2024-09-04)
Cargo version: cargo 1.81.0 (2dbb1af80 2024-08-20)

I really know nothing about building a cdynlib with Rust, but this happened to me I would try adding at least one exported function the lib.rs to see if this has any impact.

I built it on a real project before. This is a 'hello world' example.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.