MacOS 计算机系统:程序员的视角实验室设置

问题描述 投票:0回答:1

我将学习计算机系统:程序员的视角,并从 http://csapp.cs.cmu.edu/3e/labs.html

进行实验

但是我不知道如何开始,当我运行“make”来编译实验室时,例如“datalab”我得到了一个错误

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

据我了解我的系统(MacOS m1)的问题,有人找到解决方案吗?

c macos cpu-architecture 32-bit apple-silicon
1个回答
0
投票

没有足够新的 MacOS 版本可以在 M1 硬件上运行支持 32 位 x86;不久前就被删除了。 (您使用的是 AArch64 硬件,因此 x86-64 二进制文件只能使用 Rosetta 2 软件模拟运行;它也不支持旧的 32 位二进制文件。)

并且M1硬件不支持AArch32状态(32位模式),因此本机二进制文件也只能是64位。

对于任何需要运行或单步执行 32 位 x86 代码的 CS:APP 实验室,您需要在模拟器内运行其他一些操作系统,例如 QEMU(如果可以在 AArch64 MacOS 上运行)。轻量级 Linux 安装可以很好地工作,也许只需通过 SSH 连接或使用文本控制台(而不是 GUI 桌面)即可。

或者 qemu-user 可以在 MacOS 下模拟单个 x86 Linux 进程(而不是模拟在来宾中运行完整操作系统的完整系统)。
作为 GDB 远程连接到它并不比在二进制文件上运行 GDB 简单。 如何在 QEMU 上的 GDB 中单步执行 ARM 汇编? 是相反的问题,使用 QEMU 在 x86-64 Linux 桌面上单步执行 ARM Linux 二进制文件。但没有跨操作系统方面的问题,或者如何运行单行汇编,然后参见 [R1] 和条件标志,只是汇编和链接 ARM Linux 二进制文件。

© www.soinside.com 2019 - 2024. All rights reserved.