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

执行make all编译C项目出现Relocations in generic ELF (EM: 62)错误如何解决

错误原因与排查修复指南

你遇到的Relocations in generic ELF (EM: 62)、error adding symbols: File in wrong format报错核心原因是链接过程中混用了不同架构的目标文件/二进制库,链接器无法识别非对应架构的二进制文件。其中EM:62是ELF规范里定义的x86_64架构标识,说明当前编译流程中存在架构不匹配的问题,和gcc本身安装状态无关。

排查步骤

  • 第一步先清理历史编译缓存:执行make clean删除所有之前生成的*.o目标文件、.a静态库、.so动态库以及最终可执行文件,清理完成后重新执行make all测试,大部分跨设备迁移项目的缓存问题这一步即可解决。
  • 若清理后仍报错,检查所有二进制文件的架构:对项目目录下的所有.o文件、依赖的第三方库执行file <文件名>命令,比如file main.o,查看输出的ELF架构标识是否统一。
  • 检查当前工具链的默认架构:分别执行gcc -v、ld -v,查看输出中的Target字段,确认工具链的目标架构和所有二进制文件的架构一致。
  • 检查Makefile配置:查看Makefile中是否存在强制指定架构的参数(比如-m32强制32位编译)、或者交叉编译链前缀配置(比如arm-linux-gnueabihf-gcc),确认配置和当前设备环境匹配。

修复方案

  • 历史缓存导致的问题:清理缓存后重新编译即可。
  • 依赖库架构不匹配:重新编译第三方依赖库为和当前工具链一致的架构,或者安装对应架构的依赖包。
  • Makefile配置错误:删除错误的架构强制参数,或者修改交叉编译链前缀为当前设备对应的值。
  • 需要跨架构编译的场景:安装对应目标架构的交叉编译工具链,确认Makefile中交叉编译配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:15:01