linux系统混合编译rust和flutter出现问题

cargo ndk --platform 21 --target aarch64-linux-android build --release --features flutter
linux系统上编译RustDesk远程代码 这行指令生成librustdesk.so
但是一直报错读取不到library -lunwind
详细错误:
error: linking with /home/mrsun/ndk/android-ndk-r22b/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android22-clang failed:
exit status: 1
|

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

error: could not compile sysinfo due to previous error

https://www.linyufan.com/content/19/1859-1.html

这个错误可能是因为编译器无法找到 Android 平台所需的系统库 libunwind

Rust 在编译时可能需要使用一些 C/C++ 库,在 Linux 和 Android 平台上,通常需要在编译时指定这些库的位置和名称。其中,libunwind 库是一个与异常处理相关的库,用于捕获程序中的运行时错误和异常。

解决该问题的方法是,手动添加 -lunwind 参数指定 libunwind 库的位置和名称。具体操作步骤如下:

  1. 打开终端,进入项目根目录下的 Cargo.toml 所在目录。

  2. 执行以下命令,打开 Cargo 的配置文件:

    nano Cargo.toml
    
  3. [dependencies] 部分中添加以下行,显式声明 sysinfo 依赖的 libunwind 库:

    [dependencies.sysinfo]
    version = "0.16.1"
    features = ["full"]
    optional = true
    links = ["unwind"]
    
  4. 保存并关闭文件,执行以下命令重新编译项目:

    cargo ndk --platform 21 --target aarch64-linux-android build --release --features flutter
    

提示:如果 libunwind 库不存在或版本较低,可以尝试通过包管理器或源码安装最新版本的 libunwind 库。例如,在 Ubuntu 系统上,可以执行以下命令安装 libunwind 库:

sudo apt-get update && sudo apt-get install libunwind-dev

希望我的回答对你有所帮助。