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
相关产品推荐
相关产品推荐

