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

M1 Macbook中UTM虚拟机Ubuntu 20.04.4环境下编译代码报错求助

解决M1 Mac UTM中Ubuntu ARM64编译时的-m64参数错误

你的问题核心是架构不匹配——M1属于ARM64(aarch64)架构,UTM里安装的Ubuntu 20.04.4默认也是ARM64版本,而-m64是x86_64(Intel/AMD)平台专属的编译参数,ARM版的g++自然无法识别它。下面分步骤帮你解决:

第一步:确认虚拟机架构

先在Ubuntu终端运行这条命令,验证系统架构:

uname -m

如果输出是aarch64,就说明你的Ubuntu确实是ARM64版本,这也解释了-m64参数报错的原因。

第二步:解决-m64参数错误的两种方案

方案1:修改Makefile(推荐,适合大多数课程作业场景)

ARM64系统下,g++默认编译的就是64位程序,完全不需要-m64这个多余参数。你只需要:

  1. 打开作业提供的Makefile,找到包含-m64的行(通常在CXXFLAGS或CFLAGS变量定义中)。
  2. 删除-m64参数,保存文件。
  3. 重新运行make命令,应该就能正常编译出可执行文件了。

方案2:用交叉编译工具生成x86_64程序(如果课程强制要求x86架构输出)

如果教授明确需要x86_64架构的程序,你需要安装ARM64到x86_64的交叉编译工具链:

sudo apt-get install gcc-x86-64-linux-gnu g++-x86-64-linux-gnu

之后修改Makefile中的编译器:把g++替换为x86_64-linux-gnu-g++,同时保留-m64参数;或者直接用交叉编译器手动编译:

x86_64-linux-gnu-g++ 你的源文件.cpp -m64 -o 输出程序名

补充:关于第一个g++: Command not found错误

你通过sudo apt-get install build-essential解决这个问题的操作非常正确——这个包会安装g++、gcc、make等基础开发工具,是Ubuntu上编译C/C++程序的必备依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:32:45