mozilla / rust-android-gradle

Apache License 2.0
1.08k stars 70 forks source link

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

Closed Gstalker closed 2 years ago

Gstalker commented 2 years ago
= 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 commented 2 years ago

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

83

ncalexan commented 2 years ago
= 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 https://github.com/mozilla/rust-android-gradle/blob/5bfc241fee3043991351105ddaa562f6b46afa77/plugin/src/main/resources/com/nishtahir/linker-wrapper.py#L12 to figure out what's really happening.

Gstalker commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

@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 commented 2 years ago

@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 commented 2 years ago

@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 commented 2 years ago

@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 commented 2 years ago

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 commented 2 years ago

@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 commented 2 years ago

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!