You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Android NDK编译Rust共享库时遭遇链接错误

问题:Rust编译共享库时链接失败,编译可执行文件正常

编译Rust代码为可执行文件(main.rs)时无链接错误,但编译为共享库(lib.rs)时出现链接失败。错误信息如下:

链接器C:/Users/nafan/AppData/Local/ndk/26.2.11394342/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android34-clang++.cmd执行失败,退出码255;提示:--version-script=C:\Users\nafan\AppData\Local\Temp\rustcfcjtoe\list"" was unexpected at this time。

相关配置与代码:

config.toml

[target.aarch64-linux-android]
ar = "C:/Users/nafan/AppData/Local/ndk/26.2.11394342/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android34-clang++"
linker = "C:/Users/nafan/AppData/Local/ndk/26.2.11394342/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android34-clang++.cmd"

Cargo.toml

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

[dependencies]
jni = "0.21.1"

lib.rs

use jni::{objects::JClass, sys::jint, JNIEnv};

#[no_mangle]
pub extern "C" fn Java_com_example_myapp_RustInterface_rustFunction(_env: JNIEnv, _class: JClass) -> jint {
    let value = 42; // Example value

    // Convert the value to JNI jint and return it
    value as jint
} 
解决方案

这个错误是Windows下链接器处理--version-script参数时的引号转义问题,Rust生成的命令在CMD中解析出错。可按以下步骤修复:

  • 修改config.toml链接器配置
    将linker从.cmd脚本改为直接调用clang++可执行文件,同时指定链接器类型为gcc:

    [target.aarch64-linux-android]
    ar = "C:/Users/nafan/AppData/Local/ndk/26.2.11394342/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android34-clang++"
    linker = "C:/Users/nafan/AppData/Local/ndk/26.2.11394342/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android34-clang++"
    linker-flavor = "gcc"
    
  • 禁用版本脚本生成(可选)
    如果上述方法无效,可通过RUSTFLAGS跳过版本脚本:

    set RUSTFLAGS=-C link-arg=-Wl,--no-version-script
    

    或在Cargo.toml的release配置中添加:

    [profile.release]
    rustflags = ["-C", "link-arg=-Wl,--no-version-script"]
    
  • 验证修复
    执行cargo build --target aarch64-linux-android重新编译,检查链接错误是否消失。

内容的提问来源于stack exchange,提问作者Nufun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:53:31