Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to build for aarch64 due to getgrgid_r #720

Open
kheaactua opened this issue Aug 21, 2020 · 4 comments
Open

Unable to build for aarch64 due to getgrgid_r #720

kheaactua opened this issue Aug 21, 2020 · 4 comments

Comments

@kheaactua
Copy link

Attempting to build exa for Android using cargo-ndk

cargo ndk --platform 21 --target aarch64-linux-android install exa

It gets almost finishes, but then spits out:

   Compiling exa v0.9.0
     Running `rustc --crate-name exa /home/developer/.cargo/registry/src/cf-workers-proxy-enn.pages.dev-1ecc6299db9ec823/exa-0.9.0/src/bin/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C panic=abort -C lto --cfg 'feature="default"' --cfg 'feature="git"' --cfg 'feature="git2"' -C metadata=5f70e5ef62c20d0b -C extra-filename=-5f70e5ef62c20d0b --out-dir /opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps --target aarch64-linux-android -C linker=/opt/android-sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang -L dependency=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps -L dependency=/opt/android-src/rust/aarch64/bin/release/deps --extern ansi_term=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libansi_term-389ef4d559c87be4.rlib --extern datetime=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libdatetime-fde48c15c580431a.rlib --extern env_logger=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libenv_logger-2bc1d697a2ff1d04.rlib --extern exa=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libexa-e2c48030a3f9206a.rlib --extern git2=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libgit2-177a9ed242771eb8.rlib --extern glob=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libglob-87917807a55120bb.rlib --extern lazy_static=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/liblazy_static-83bddb69dec5c451.rlib --extern libc=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/liblibc-54d7f6168372e2c1.rlib --extern locale=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/liblocale-84c2114bf5a96f88.rlib --extern log=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/liblog-379f62f56c3088b1.rlib --extern natord=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libnatord-1923276c114d9ab2.rlib --extern num_cpus=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libnum_cpus-cca71c57d5ec524f.rlib --extern number_prefix=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libnumber_prefix-21dd903e40271da2.rlib --extern scoped_threadpool=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libscoped_threadpool-30649c1601176980.rlib --extern term_grid=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libterm_grid-a0972decaef8ca12.rlib --extern term_size=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libterm_size-5d00b8c49f828653.rlib --extern unicode_width=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libunicode_width-4a3bd5c7a13ccf47.rlib --extern users=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libusers-0c58acd841539818.rlib --extern zoneinfo_compiled=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/libzoneinfo_compiled-bb35e5c82a939439.rlib --cap-lints allow -L native=/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/build/libgit2-sys-7f2d58e30eb8c7d8/out/build`
error: linking with `/opt/android-sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang` failed: exit code: 1
  |
  = note: "/opt/android-sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--allow-multiple-definition" "-L" "/home/developer/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-linux-android/lib" "/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/exa-5f70e5ef62c20d0b.exa.63vuv0xk-cgu.3.rcgu.o" "-o" "/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/exa-5f70e5ef62c20d0b" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps" "-L" "/opt/android-src/rust/aarch64/bin/release/deps" "-L" "/opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/build/libgit2-sys-7f2d58e30eb8c7d8/out/build" "-L" "/home/developer/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-linux-android/lib" "-Wl,-Bstatic" "/tmp/rustcVYg6Wn/liblibgit2_sys-7f93c4acca109ca8.rlib" "-Wl,--start-group" "/tmp/rustcVYg6Wn/libbacktrace_sys-0cef47a6ea2f6faa.rlib" "-Wl,--end-group" "/home/developer/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-linux-android/lib/libcompiler_builtins-4e815dabfb033b9c.rlib" "-Wl,-Bdynamic" "-lz" "-ldl" "-llog" "-lgcc" "-lc" "-lm"
  = note: /opt/android-src/rust/aarch64/bin/aarch64-linux-android/release/deps/exa-5f70e5ef62c20d0b.exa.63vuv0xk-cgu.3.rcgu.o: In function `exa::output::table::Table::display::h6f11ebda1bfac3a4':
          exa.63vuv0xk-cgu.3:(.text._ZN3exa6output5table5Table7display17h6f11ebda1bfac3a4E+0x528): undefined reference to `getgrgid_r'
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error

error: failed to compile `exa v0.9.0`, intermediate artifacts can be found at `/opt/android-src/rust/aarch64/bin`

I think I saw a similar symbol cause problems in 677

Cargo was being run on a Ubuntu 18.04 x86_64 machine (Linux sync-android 5.3.0-62-generic #56-Ubuntu SMP Tue Jun 23 11:20:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux)

@ariasuni
Copy link
Collaborator

ariasuni commented Jan 3, 2021

There’s getgrgid_r in Bionic (Android’s libc) so I’m not sure it’s a problem with exa.

Looking briefly on the web, it seems there’s a lot of steps involved, maybe you’re missing something on your system? Have you tried with cross?

@kheaactua
Copy link
Author

Hey, no, i wasn't aware of that actually. I'll see if I can give it a try. Thanks!

@ariasuni
Copy link
Collaborator

Hey, did you try it? Just curious to know if there’s really something to change on exa’s side for Android support or not

@dalance
Copy link

dalance commented Jan 19, 2022

getgrgid_r seems to be added at API level 24.
https://cs.android.com/android/platform/superproject/+/master:bionic/docs/status.md

So you should

cargo ndk --platform 24 --target aarch64-linux-android install exa

Now I'm tring to bump up NDK and API version of cross cross-rs/cross#629.
After it, I think exa can be compiled through cross.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants