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

WSL2 Ubuntu20.04中使用ARM交叉编译工具链时出现找不到ld的错误

解决WSL2 Ubuntu 20.04中arm-none-eabi-gcc链接时找不到'ld'的问题

你的核心问题是交叉编译工具链没有调用自身配套的ARM架构ld,反而尝试用系统x86_64的ld,两者架构不兼容,因此报错。以下是具体解决步骤:

1. 让工具链bin目录优先于系统PATH

arm-none-eabi-9工具链自带专属的arm-none-eabi-ld,必须让工具链的bin目录在PATH中优先级高于系统的/usr/bin:

  • 找到工具链安装路径,比如默认解压后可能在/opt/gcc-arm-none-eabi-9-2019-q4-major/bin
  • 临时设置PATH(重启终端后失效):
    export PATH=/opt/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH
    
  • 验证生效:执行which arm-none-eabi-ld,应返回工具链bin目录下的路径,而非/usr/bin/ld

2. 检查工具链完整性

确认工具链是否缺失arm-none-eabi-ld:

  • 进入工具链bin目录,执行ls -l arm-none-eabi-ld,若文件不存在,说明解压/安装过程丢包,重新下载解压工具链
  • 若文件存在,执行chmod +x arm-none-eabi-ld确保可执行权限

3. 链接时强制指定工具链路径

如果PATH设置仍有问题,可在编译链接命令中添加-B参数指定工具链bin目录,让gcc强制使用该目录下的ld:

arm-none-eabi-gcc [你的编译参数] -B/opt/gcc-arm-none-eabi-9-2019-q4-major/bin

4. 检查nano.specs配置

你使用了-specs=nano.specs,部分情况下specs文件会硬编码ld路径:

  • 找到工具链中的nano.specs文件(通常在/opt/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1/specs目录下)
  • 打开文件搜索ld相关配置,确保路径指向工具链自身的arm-none-eabi-ld而非系统ld

关键说明

系统的/usr/bin/ld是针对x86_64架构的链接器,无法处理cortex-m0的ARM目标文件,必须使用交叉工具链配套的arm-none-eabi-ld才能完成链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:35:19