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

针对armv7-unknown-linux-gnueabi目标的Rust程序构建链接错误求助

解决Rust交叉编译到armv7-unknown-linux-gnueabi的链接错误

问题场景

有一个简单的Rust程序:

// main.rs
fn main() {
    println!("Hello World!");
}

执行交叉编译命令时:

rustc --target armv7-unknown-linux-gnueabi main.rs

出现链接错误,核心提示:

/usr/bin/ld: main.main.bb83c76b-cgu.0.rcgu.o: Relocations in generic ELF (EM: 40)
main.main.bb83c76b-cgu.0.rcgu.o: error adding symbols: File in wrong format

本质是系统默认的cc/ld是x86架构的工具链,无法处理ARM架构的目标文件,导致链接失败。

解决步骤

1. 安装ARM交叉编译工具链

根据你的Linux发行版安装对应工具链:

  • Debian/Ubuntu系列:
    sudo apt install gcc-arm-linux-gnueabi
    
  • Fedora/RHEL系列:
    sudo dnf install arm-linux-gnueabi-gcc
    

2. 配置Rust使用交叉编译链接器

有两种配置方式:

方式一:临时通过环境变量指定

编译时直接设置CC环境变量为ARM交叉编译器:

CC=arm-linux-gnueabi-gcc rustc --target armv7-unknown-linux-gnueabi main.rs

方式二:永久配置Cargo(推荐)

编辑~/.cargo/config.toml文件(不存在则创建),添加以下内容:

[target.armv7-unknown-linux-gnueabi]
linker = "arm-linux-gnueabi-gcc"

之后再执行原编译命令,会自动使用指定的ARM链接器:

rustc --target armv7-unknown-linux-gnueabi main.rs

验证

编译完成后,用file命令检查生成的可执行文件架构:

file main

输出包含ARM字样即说明编译成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:25:29