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

使用Rust编译Android终端Hello World时cc链接失败求助

解决Rust编译Android目标链接失败的问题

问题根源分析

  • 目标架构不匹配:执行cargo build --target arm-linux-androideabi,但错误日志显示实际编译目标为aarch64-linux-android(64位ARM),存在架构冲突。
  • CC/CXX环境变量配置错误:将生成工具链的脚本make_standalone_toolchain.py直接设为编译器,这不是正确的编译器路径。
  • Cargo配置错误:Cargo.toml中的链接器配置无效且路径不正确,未指定NDK提供的交叉编译器。

修复步骤

1. 修正环境变量配置(~/.bashrc)

删除错误的CC/CXX配置,先生成适配arm架构的独立工具链(仅需执行一次),再将工具链路径加入环境变量:

export PATH=$PATH:/home/alberto/.platformio/penv/bin
export NDK_PATH=~/Android/Sdk/ndk/26.1.10909125
# 生成arm-linux-androideabi工具链,指定API级别(如21,适配大多数Android设备)
$NDK_PATH/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir ~/android-toolchain-arm
# 将工具链加入PATH
export PATH=$PATH:~/android-toolchain-arm/bin

. "$HOME/.cargo/env"

执行source ~/.bashrc使配置生效。

2. 创建正确的Cargo配置文件

在项目根目录创建.cargo/config.toml,替代Cargo.toml中的无效配置:

[target.arm-linux-androideabi]
linker = "arm-linux-androideabi-clang"
rustflags = [
  "-C", "link-arg=-fuse-ld=lld",
]

3. 修正Cargo.toml配置

移除无效的[build]和[target.'cfg(target_os = "android")']字段,保留基础配置:

[package]
name = "prueba_android"
version = "0.1.0"
edition = "2021"

# 仅当确实需要openssl时保留,否则可删除
[target.arm-linux-androideabi.dependencies]
openssl = { version = "*", features = ["vendored"] }

4. 重新编译

清理旧的编译产物,重新指定目标编译:

cargo clean
cargo build --target arm-linux-androideabi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:55:54