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

MacOS M1环境下《深入理解计算机系统》实验编译报错求助

MacOS M1 编译CSAPP DataLab 报错解决方案

我正在学习《深入理解计算机系统》(Computer Systems: A Programmer's Perspective),计划完成官网实验,但编译datalab执行make命令时出现报错,错误信息如下:

gcc -O -Wall -m32 -lm -o btest bits.c btest.c decl.c tests.c
ld: unknown/unsupported architecture name for: -arch armv4t
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [btest] Error 1

确实是M1架构的问题——M1是arm64原生架构,原Makefile里的-m32参数会让clang尝试生成armv4t架构的32位代码,而这个架构并不被当前系统支持。给你几个可行的解决办法:

  • 修改Makefile移除32位编译参数
    打开datalab目录下的Makefile,找到编译btest的那一行,删掉-m32参数,保存后执行make clean && make即可。

  • 用Rosetta 2以x86_64架构编译
    找到终端应用,右键选择「显示简介」,勾选「使用Rosetta打开」,重启终端后进入datalab目录,执行make clean && make。

  • 手动指定x86_64架构编译
    如果前两种方法无效,直接修改Makefile里的编译命令,把-m32替换成-arch x86_64,修改后的命令类似:

    gcc -O -Wall -arch x86_64 -lm -o btest bits.c btest.c decl.c tests.c
    

    保存后重新执行make clean && make。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:52:40