Skip to content

Compiling with Android NDK 23 fails on Windows: linker-wrapper.bat yields ld: error: unable to find library -lgcc #89

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

Closed
Gstalker opened this issue Mar 17, 2022 · 12 comments

Comments

@Gstalker
Copy link

= note: ld: error: unable to find library -lgcc
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

ndkVersion: 23.0.7421159
example code(from a history commit of my project):https://github.com/Gstalker/Ring-Zygisk/tree/3a0a67d15d1ab8167892528017d652c2fa33821b

@Gstalker
Copy link
Author

(My English is soooo poor, sorry for this)
after downgrade my ndk to version 22.1.7171670, it works with no problem.

#83

@ncalexan
Copy link
Member

= note: ld: error: unable to find library -lgcc
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

ndkVersion: 23.0.7421159 example code(from a history commit of my project):https://github.com/Gstalker/Ring-Zygisk/tree/3a0a67d15d1ab8167892528017d652c2fa33821b

Can we get a complete --verbose log here? (A link to CI logs would be great.) It's not clear to me that the linker invocation is actually coming from the plugin or whether it's a build script that is failing.

Relevant debugging information will need to be inserted around

ndk_major_version = os.environ['CARGO_NDK_MAJOR_VERSION']
to figure out what's really happening.

@Gstalker
Copy link
Author

I try to make a CI logs, but it is hard for me to use github CI, sorry

Here is the Logs in my local

> Task :module:cargoBuildArm FAILED
   Compiling zygisk v0.1.0 ({ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust)
error: linking with `{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat` failed: exit code: 1
  |
linking with `{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat` failed: exit code: 1

  = note: "cmd" "/c" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\build\\linker-wrapper\\linker-wrapper.bat" "-Wl,--version-script={USER_PATH}\\AppData\\Local\\Temp\\rustcvUHnsO\\list" "-Wl,--allow-multiple-definition" "-march=armv7-a" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.0.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.1.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.10.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.11.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.12.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.13.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.14.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.15.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.2.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.3.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.4.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.5.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.6.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.7.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.8.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.9.rcgu.o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.4mfcznytv2xg63e7.rcgu.rmeta" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.57ialo9axbf26x69.rcgu.o" "-Wl,--as-needed" "-L" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps" "-L" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\debug\\deps" "-L" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib" "-Wl,-Bstatic" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libbitflags-b6765a1a4569684f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libjni-4ab0cdafbf45cdda.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcesu8-85c48d9ebc4318e7.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\liblog-d6c38b8d8338e54b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcfg_if-3c1637ca4b6f6ad6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcombine-3235a713d46890f8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libmemchr-006a3bf8106e0d7a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libbytes-dfdafa2472549d35.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libthiserror-b912a930d89030d8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libjni_sys-193021e46e96988a.rlib" "-Wl,--no-whole-archive" "-Wl,--start-group" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libstd-8c4523d9809ec6e2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libpanic_unwind-467254c4f6e22a65.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libminiz_oxide-4fcd0002dff3932a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libadler-8dcd7a460d8fb162.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libobject-b92cfab056efaf60.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libmemchr-c9b429067a590244.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libaddr2line-3d4e00de194bebc0.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libgimli-3fde4ee2ed4f8d90.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libstd_detect-31acb35107376ade.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_demangle-431f5c2de20af646.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libhashbrown-583a998c6656be4f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_std_workspace_alloc-9f9e4b6f80465857.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libunwind-6a09e5fda0e39476.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcfg_if-891ebc7bca0deb3e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\liblibc-8b00296bac1fa394.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\liballoc-effad6ab75e4cdcc.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_std_workspace_core-bc8a36b40cb8b3ae.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcore-5ca41b10dc2f79fe.rlib" "-Wl,--no-whole-archive" "-Wl,--end-group" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcompiler_builtins-bfbc9876b29e3fe7.rlib" "-Wl,-Bdynamic" "-ldl" "-llog" "-lgcc" "-ldl" "-lc" "-lm" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib" "-o" "{ROOT_PATH}\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libzygisk.so" "-shared" "-Wl,-zrelro,-znow" "-nodefaultlibs"
  = note: ld: error: unable to find library -lgcc
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          
          {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust>"python" "{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.py" @{USER_PATH}\AppData\Local\Temp\rustcvUHnsO\linker-arguments 
          'D:\Android_sdk\ndk\23.0.7421159\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi26-clang.cmd' -Wl,-soname,libzygisk.so '@{USER_PATH}\AppData\Local\Temp\rustcvUHnsO\linker-arguments'
          

error: could not compile `zygisk` due to previous error
could not compile `zygisk` due to previous error

@Gstalker
Copy link
Author

Here is another log, with gradlew --info

> Task :module:cargoBuildArm
Caching disabled for task ':module:cargoBuildArm' because:
  Build cache is disabled
Task ':module:cargoBuildArm' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Starting process 'command 'rustc''. Working directory: {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module Command: rustc --version --verbose
Successfully started process 'command 'rustc''
Default rust target triple: x86_64-pc-windows-msvc
Passing through project properties with prefix 'RUST_ANDROID_GRADLE_TARGET_ARMV7_LINUX_ANDROIDEABI_' (environment variables with prefix 'ORG_GRADLE_PROJECT_RUST_ANDROID_GRADLE_TARGET_ARMV7_LINUX_ANDROIDEABI_'
C/C++: android.ndkVersion from module build.gradle is [23.0.7421159]
C/C++: android.ndkPath from module build.gradle is not set
C/C++: ndk.dir in local.properties is not set
C/C++: Not considering ANDROID_NDK_HOME because support was removed after deprecation period.
C/C++: sdkFolder is D:\Android_sdk
Starting process 'command 'cargo''. Working directory: {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust Command: cargo build --verbose --target=armv7-linux-androideabi
Successfully started process 'command 'cargo''
       Fresh unicode-xid v0.2.2
       Fresh cfg-if v1.0.0
       Fresh bytes v1.1.0
       Fresh jni-sys v0.3.0
       Fresh cesu8 v1.1.0
       Fresh bitflags v1.3.2
       Fresh winapi v0.3.9
       Fresh winapi-util v0.1.5
       Fresh proc-macro2 v1.0.36
       Fresh memchr v2.4.1
       Fresh log v0.4.14
       Fresh quote v1.0.16
       Fresh same-file v1.0.6d
       Fresh combine v4.6.3
       Fresh walkdir v2.3.2
       Fresh syn v1.0.89
       Fresh thiserror-impl v1.0.30
       Fresh thiserror v1.0.30
       Fresh jni v0.19.0
   Compiling zygisk v0.1.0 ({ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust)
     Running `rustc --crate-name zygisk --edition=2021 src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,future-incompat --crate-type dylib --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=f2445d78e0b1fede --out-dir {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps --target armv7-linux-androideabi -C linker={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat -C incremental={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\incremental -L dependency={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps -L dependency={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\debug\deps --extern bitflags={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\libbitflags-b6765a1a4569684f.rlib --extern jni={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\libjni-4ab0cdafbf45cdda.rlib --extern log={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\liblog-d6c38b8d8338e54b.rlib`
error: linking with `{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat` failed: exit code: 1
  |
linking with `{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat` failed: exit code: 1

  = note: "cmd" "/c" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\build\\linker-wrapper\\linker-wrapper.bat" "-Wl,--version-script={USER_PATH}\\AppData\\Local\\Temp\\rustcS8iUYz\\list" "-Wl,--allow-multiple-definition" "-march=armv7-a" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.0.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.1.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.10.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.11.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.12.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.13.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.14.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.15.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.2.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.3.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.4.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.5.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.6.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.7.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.8.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.zygisk.159cc76b-cgu.9.rcgu.o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.4mfcznytv2xg63e7.rcgu.rmeta" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\zygisk.57ialo9axbf26x69.rcgu.o" "-Wl,--as-needed" "-L" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps" "-L" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\debug\\deps" "-L" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib" "-Wl,-Bstatic" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libbitflags-b6765a1a4569684f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libjni-4ab0cdafbf45cdda.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcesu8-85c48d9ebc4318e7.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\liblog-d6c38b8d8338e54b.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcfg_if-3c1637ca4b6f6ad6.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libcombine-3235a713d46890f8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libmemchr-006a3bf8106e0d7a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libbytes-dfdafa2472549d35.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libthiserror-b912a930d89030d8.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libjni_sys-193021e46e96988a.rlib" "-Wl,--no-whole-archive" "-Wl,--start-group" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libstd-8c4523d9809ec6e2.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libpanic_unwind-467254c4f6e22a65.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libminiz_oxide-4fcd0002dff3932a.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libadler-8dcd7a460d8fb162.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libobject-b92cfab056efaf60.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libmemchr-c9b429067a590244.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libaddr2line-3d4e00de194bebc0.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libgimli-3fde4ee2ed4f8d90.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libstd_detect-31acb35107376ade.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_demangle-431f5c2de20af646.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libhashbrown-583a998c6656be4f.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_std_workspace_alloc-9f9e4b6f80465857.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libunwind-6a09e5fda0e39476.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcfg_if-891ebc7bca0deb3e.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\liblibc-8b00296bac1fa394.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\liballoc-effad6ab75e4cdcc.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\librustc_std_workspace_core-bc8a36b40cb8b3ae.rlib" "-Wl,--no-whole-archive" "-Wl,--whole-archive" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcore-5ca41b10dc2f79fe.rlib" "-Wl,--no-whole-archive" "-Wl,--end-group" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib\\libcompiler_builtins-bfbc9876b29e3fe7.rlib" "-Wl,-Bdynamic" "-ldl" "-llog" "-lgcc" "-ldl" "-lc" "-lm" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "{USER_PATH}\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\armv7-linux-androideabi\\lib" "-o" "F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\armv7-linux-androideabi\\debug\\deps\\libzygisk.so" "-shared" "-Wl,-zrelro,-znow" "-nodefaultlibs"
  = note: ld: error: unable to find library -lgcc
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          
          {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust>"python" "{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.py" @{USER_PATH}\AppData\Local\Temp\rustcS8iUYz\linker-arguments 
          'D:\Android_sdk\ndk\23.0.7421159\toolchains\llvm\prebuilt\windows-x86_64\bin\armv7a-linux-androideabi26-clang.cmd' -Wl,-soname,libzygisk.so '@{USER_PATH}\AppData\Local\Temp\rustcS8iUYz\linker-arguments'
          

error: could not compile `zygisk` due to previous error

Caused by:
  process didn't exit successfully: `rustc --crate-name zygisk --edition=2021 src\lib.rs --error-format=json --json=diagnostic-rendered-ansi,future-incompat --crate-type dylib --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=f2445d78e0b1fede --out-dir {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps --target armv7-linux-androideabi -C linker={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.bat -C incremental={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\incremental -L dependency={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps -L dependency={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\debug\deps --extern bitflags={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\libbitflags-b6765a1a4569684f.rlib --extern jni={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\libjni-4ab0cdafbf45cdda.rlib --extern log={ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust\target\armv7-linux-androideabi\debug\deps\liblog-d6c38b8d8338e54b.rlib` (exit code: 1)

could not compile `zygisk` due to previous error

> Task :module:cargoBuildArm FAILED
:module:cargoBuildArm (Thread[Execution worker for ':',5,main]) completed. Took 4.172 secs.
:module:cargoBuildArm64 (Thread[Execution worker for ':',5,main]) started.
Caused by:

@ncalexan ncalexan changed the title BUG: -lgcc still cannot find libgcc.so Compiling with Android NDK 23 fails on Windows: linker-wrapper.bat yields ld: error: unable to find library -lgcc Mar 18, 2022
@ncalexan
Copy link
Member

I think I see what's happening:

          {ROOT_PATH}\Zygisk-Rust-ModuleTemplate\module\rust>"python" "{ROOT_PATH}\Zygisk-Rust-ModuleTemplate\build\linker-wrapper\linker-wrapper.py" @{USER_PATH}\AppData\Local\Temp\rustcS8iUYz\linker-arguments 

The linker wrapper that post #83 filters arguments is instead being given an argument file. That's perfectly valid but not something we've anticipated. We need to extend #83 to read @path and update it in-place in order for this approach to work. Patches appreciated! We don't run our test suite on Windows yet, but at some point I'll try to do that so we can verify this is actually fixed.

@Gstalker, are the {ROOT_PATH} identifiers direct from the output? Or are they a CI thing? Or something you've done manually? 'cuz I've not seen that before and I doubt Python will open(...) that path transparently.

@Gstalker
Copy link
Author

@ncalexan {ROOT_PATH} is modify by me manually. It is the path prefix of the project directory, just like G:\xxxxxxx, and the original path which without modify may look like G:\xxxxxxx\Zygisk-Rust-ModuleTemplate.

And {USER_PATH} is the same, it the Windows user directory prefix in C:/, like C:\Users\BeautifulName

@ncalexan
Copy link
Member

@ncalexan {ROOT_PATH} is modify by me manually. It is the path prefix of the project directory, just like G:\xxxxxxx, and the original path which without modify may look like G:\xxxxxxx\Zygisk-Rust-ModuleTemplate.

And {USER_PATH} is the same, it the Windows user directory prefix in C:/, like C:\Users\BeautifulName

Thanks for confirming. It's really not very hard to test local changes (https://github.com/mozilla/rust-android-gradle#testing-local-changes should be sufficient) so if you can try to address this by handling @file, that would be great.

Otherwise, could you post the contents of one of those linker-arguments files? It may be tricky to get your hands on it since it is a temporary file.

@Gstalker
Copy link
Author

Gstalker commented Mar 19, 2022

@ncalexan I got it!
Below is the linker-wrapper.py which modified by myself
The same as before, {TMP_DIR} is the path prefix, hidden by myself manually.

from __future__ import absolute_import, print_function, unicode_literals

import os
import pipes
import subprocess
import sys

args = [os.environ['RUST_ANDROID_GRADLE_CC'], os.environ['RUST_ANDROID_GRADLE_CC_LINK_ARG']] + sys.argv[1:]

with open("{TMP_DIR}\\args.pre", "w") as f:
    f.write(' '.join(pipes.quote(arg) for arg in args))

with open("{TMP_DIR}\\linker-arguments.pre", "w") as f:
    with open(args[-1][1:], "r") as argument:
        arguments = argument.read()
        f.write(arguments)
        f.flush()

# The `gcc` library is not included starting from NDK version 23.
# Work around by using `unwind` replacement.
ndk_major_version = os.environ['CARGO_NDK_MAJOR_VERSION']
if ndk_major_version.isdigit():
    if 23 <= int(ndk_major_version):
        for i, arg in enumerate(args):
            if arg == "-lgcc":
                args[i] = "-lunwind"

with open("{TMP_DIR}\\args.post", "w") as f:
    f.write(' '.join(pipes.quote(arg) for arg in args))

with open("{TMP_DIR}\\linker-arguments.post", "w") as f:
    with open(args[-1][1:], "r") as argument:
        arguments = argument.read()
        f.write(arguments)
        f.flush()

# This only appears when the subprocess call fails, but it's helpful then.
printable_cmd = ' '.join(pipes.quote(arg) for arg in args)
print(printable_cmd)

sys.exit(subprocess.call(args))

And below are output files:

args.pre:

'D:\Android_sdk\ndk\23.0.7421159\toolchains\llvm\prebuilt\windows-x86_64\bin\x86_64-linux-android26-clang.cmd' -Wl,-soname,libzygisk.so '@C:\Users\{USER_NAME}\AppData\Local\Temp\rustcJleiFS\linker-arguments'

args.post:

'D:\Android_sdk\ndk\23.0.7421159\toolchains\llvm\prebuilt\windows-x86_64\bin\x86_64-linux-android26-clang.cmd' -Wl,-soname,libzygisk.so '@C:\Users\23719\AppData\Local\Temp\rustcJleiFS\linker-arguments'

OK,it is easy to see that -lgcc still in the linker-argument after filltering

linker-arguments.pre

-Wl,--version-script=C:\\Users\\23719\\AppData\\Local\\Temp\\rustcJleiFS\\list
-Wl,--allow-multiple-definition
-m64
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.0.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.1.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.10.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.11.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.12.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.13.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.14.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.15.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.2.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.3.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.4.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.5.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.6.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.7.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.8.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.9.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.3i3asca2cumave35.rcgu.rmeta
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.6j6o3fhdblss3j9.rcgu.o
-Wl,--as-needed
-L
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps
-L
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\debug\\deps
-L
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib
-Wl,-Bstatic
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libbitflags-8c9911b1812b476b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libjni-f10bca1bfbe30209.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcesu8-aea5b6a45b281a2d.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\liblog-ccdc8e3687fe5bba.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcfg_if-31764356964fe436.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcombine-e3e0472680aaca03.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libmemchr-25fa5a0b1a313052.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libbytes-e0268b63d61d3430.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libthiserror-717d3cbe9f451cd7.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libjni_sys-05e2520188cad8f0.rlib
-Wl,--no-whole-archive
-Wl,--start-group
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libstd-a4882cb0d4bc6d41.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libpanic_unwind-a00a68073097bb15.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libminiz_oxide-fdaae57fe91e4b54.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libadler-ca91d140ce32563b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libobject-4154b00927c28bbd.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libmemchr-919a4d26e7434778.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libaddr2line-27b60df7c2d68cdc.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libgimli-044ae9ac2947ed2f.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libstd_detect-2761d2391caa2aff.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_demangle-5804edcac15ba383.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libhashbrown-7c5a18471f11f006.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_std_workspace_alloc-5ed5e346f0849577.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libunwind-ec0d30659641517b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcfg_if-ce69a8261e432754.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\liblibc-50da2df61e5cceb7.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\liballoc-fac29970a1218220.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_std_workspace_core-1c11e58b82b7fac5.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcore-0967ea83a66cfd26.rlib
-Wl,--no-whole-archive
-Wl,--end-group
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcompiler_builtins-7f54304cfb051d7e.rlib
-Wl,-Bdynamic
-ldl
-llog
-lgcc
-ldl
-lc
-lm
-Wl,--eh-frame-hdr
-Wl,-znoexecstack
-L
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib
-o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libzygisk.so
-shared
-Wl,-zrelro,-znow
-nodefaultlibs

linker-arguments.post

-Wl,--version-script=C:\\Users\\23719\\AppData\\Local\\Temp\\rustcJleiFS\\list
-Wl,--allow-multiple-definition
-m64
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.0.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.1.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.10.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.11.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.12.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.13.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.14.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.15.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.2.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.3.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.4.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.5.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.6.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.7.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.8.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.zygisk.614ec69f-cgu.9.rcgu.o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.3i3asca2cumave35.rcgu.rmeta
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\zygisk.6j6o3fhdblss3j9.rcgu.o
-Wl,--as-needed
-L
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps
-L
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\debug\\deps
-L
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib
-Wl,-Bstatic
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libbitflags-8c9911b1812b476b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libjni-f10bca1bfbe30209.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcesu8-aea5b6a45b281a2d.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\liblog-ccdc8e3687fe5bba.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcfg_if-31764356964fe436.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libcombine-e3e0472680aaca03.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libmemchr-25fa5a0b1a313052.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libbytes-e0268b63d61d3430.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libthiserror-717d3cbe9f451cd7.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libjni_sys-05e2520188cad8f0.rlib
-Wl,--no-whole-archive
-Wl,--start-group
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libstd-a4882cb0d4bc6d41.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libpanic_unwind-a00a68073097bb15.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libminiz_oxide-fdaae57fe91e4b54.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libadler-ca91d140ce32563b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libobject-4154b00927c28bbd.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libmemchr-919a4d26e7434778.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libaddr2line-27b60df7c2d68cdc.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libgimli-044ae9ac2947ed2f.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libstd_detect-2761d2391caa2aff.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_demangle-5804edcac15ba383.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libhashbrown-7c5a18471f11f006.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_std_workspace_alloc-5ed5e346f0849577.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libunwind-ec0d30659641517b.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcfg_if-ce69a8261e432754.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\liblibc-50da2df61e5cceb7.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\liballoc-fac29970a1218220.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\librustc_std_workspace_core-1c11e58b82b7fac5.rlib
-Wl,--no-whole-archive
-Wl,--whole-archive
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcore-0967ea83a66cfd26.rlib
-Wl,--no-whole-archive
-Wl,--end-group
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib\\libcompiler_builtins-7f54304cfb051d7e.rlib
-Wl,-Bdynamic
-ldl
-llog
-lgcc
-ldl
-lc
-lm
-Wl,--eh-frame-hdr
-Wl,-znoexecstack
-L
C:\\Users\\23719\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-linux-android\\lib
-o
F:\\gradually\\Zygisk-Rust-ModuleTemplate\\module\\rust\\target\\x86_64-linux-android\\debug\\deps\\libzygisk.so
-shared
-Wl,-zrelro,-znow
-nodefaultlibs

@ncalexan
Copy link
Member

@Gstalker this is very helpful. You should be able to finish this up, at least to test that the argument rewriting can work; we can get something into the plugin proper after we know that.

Modify the loop that does the -lgcc rewriting to modify arguments rather than args: that's what is read from the file and what is written back to disk. If that addresses the issue, we can work on making this recursive, handling multiple arguments, etc.

@ssrlive
Copy link

ssrlive commented Mar 27, 2022

This is a simplest resolv:

Fixing build error for Above NDK 23 and above

find out all the 4 folders containing file libunwind.a, in my PC, it's C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\12.0.8\lib\linux\x86_64\ and more.
create 4 text files named libgcc.a in the same folders with this contents

INPUT(-lunwind)

image

reference link

@ncalexan
Copy link
Member

@ssrlive that's a good workaround, and will address the issue for projects not using rust-android-gradle. But we'll eventually get this fixed -- patches wanted!

ncalexan added a commit to ncalexan/rust-android-gradle that referenced this issue May 6, 2022
…lla#89.

This applies the fix of mozilla#83 to linker argument @files.  Linker
argument files are used on (at least) Windows.
ncalexan added a commit to ncalexan/rust-android-gradle that referenced this issue May 6, 2022
…lla#89.

This applies the fix of mozilla#83 to linker argument @files.  Linker
argument files are used on (at least) Windows.
ncalexan added a commit to ncalexan/rust-android-gradle that referenced this issue May 6, 2022
…lla#89.

This applies the fix of mozilla#83 to linker argument @files.  Linker
argument files are used on (at least) Windows.
@ncalexan
Copy link
Member

ncalexan commented May 6, 2022

This should be fixed in the just published 0.9.3 -- at least, the new Windows tests in CI succeed with NDK 23, and they didn't until I addressed this. Testing appreciated!

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