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
库的位置和名称。具体操作步骤如下:
打开终端,进入项目根目录下的 Cargo.toml
所在目录。
执行以下命令,打开 Cargo 的配置文件:
nano Cargo.toml
在 [dependencies]
部分中添加以下行,显式声明 sysinfo
依赖的 libunwind
库:
[dependencies.sysinfo]
version = "0.16.1"
features = ["full"]
optional = true
links = ["unwind"]
保存并关闭文件,执行以下命令重新编译项目:
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
希望我的回答对你有所帮助。