ARM64 Ubuntu下编译C程序遇GCC链接错误求助
问题分析与解决
核心原因
错误中的EM:62是ELF文件的架构标识,对应**x86-64(AMD64)**平台,而你当前运行的是ARM64架构的Ubuntu系统。这说明isPrime.o是用x86编译器生成的,和当前ARM64平台的二进制格式不兼容,导致链接器报错。
解决步骤
- 彻底清理所有旧的目标文件和可执行文件,避免残留的x86格式文件干扰:
make clean && rm -f isPrime.o primeNumber.o primeNumber - 确认当前使用的gcc是ARM64版本:
查看输出中的gcc -vTarget字段,应该显示类似aarch64-linux-gnu的ARM64目标标识。 - 检查Makefile,确保包含
isPrime.c的编译规则,比如:
如果缺少这条规则,链接时会直接使用已存在的x86版本isPrime.o: isPrime.c gcc -c -Wall -o isPrime.o isPrime.cisPrime.o,导致报错。 - 重新执行编译:
make - 如果Makefile没有自动编译
isPrime.c,可以手动先编译它再执行make:gcc -c -Wall -o isPrime.o isPrime.c make
内容的提问来源于stack exchange,提问作者Zixuan Q
相关产品推荐
相关产品推荐

