我正在使用一台搭载 Apple M1 芯片的 MacBook,在终端上进行操作。我尝试使用一个不适用于 aarm64 架构的命令行工具,所以在终端中出现了以下错误信息:
zsh: bad CPU type in executable
有什么办法可以使用这个命令行工具,比如模拟或其他方式?我该如何在基于 M1 芯片的 Mac 上,在终端中运行非原生 Arm 架构的二进制文件?
我正在使用一台搭载 Apple M1 芯片的 MacBook,在终端上进行操作。我尝试使用一个不适用于 aarm64 架构的命令行工具,所以在终端中出现了以下错误信息:
zsh: bad CPU type in executable
有什么办法可以使用这个命令行工具,比如模拟或其他方式?我该如何在基于 M1 芯片的 Mac 上,在终端中运行非原生 Arm 架构的二进制文件?
softwareupdate --install-rosetta
如果您需要在以前的架构中运行通用二进制文件,请使用arch
并指定架构。对于需要运行不适用于苹果芯片的其他二进制文件(如Homebrew)的二进制文件,您需要手动指定架构。
arch -x86_64 …
例如,arch -x86_64 brew install packagename
或者,您可以通过在Finder中打开终端应用程序的“获取信息”并勾选“使用Rosetta打开”来运行整个终端应用程序。这种方式将使用Rosetta运行终端和其尝试运行的所有二进制文件,因此不支持Apple芯片的二进制文件,并且性能会受到影响,但您无需指定架构即可运行旧的二进制文件。
要将现有的zsh终端切换到x86_64,请使用以下命令:
arch -x86_64 zsh
arch -x86_64 zsh
(或类似命令)并且出现此错误,请尝试运行
which -a zsh
检查您的zsh安装。我最终得到了
/opt/homebrew/bin/zsh
/bin/zsh
需要的
brew uninstall zsh
只要得到一个,那么对我来说,使用arch命令就可以了。
PATH=${PATH/\/usr\/local\/bin:}
,将/usr/local/bin
从本次会话的PATH中移除。
3. 在该会话中运行which git curl
命令。
4. 确认您没有收到任何错误消息,并且显示的路径都不以/usr/local/bin
开头。
5. 在该会话中运行安装程序。
来源:https://github.com/Homebrew/discussions/discussions/1379#discussioncomment-672727
binfmt
的支持吗? - Dmitry Grigoryevbinfmt
也需要处理不同格式的处理程序。安装Rosetta将添加所需的功能,以在M1上运行Intel代码。 - nohillsidebinfmt
确保检查发生在exec
调用中,所以无论你是从GUI、终端、脚本还是其他二进制文件启动一个外部架构的程序都没关系。 - Dmitry Grigoryevarch
命令来覆盖其选择(Finder 中的复选框也可以)。 - nohillsidearch -x86_64 zsh
时遇到了相同的错误(zsh: bad CPU type in executable)。(我已安装 Rosetta。) - Samet Baskıcıarch -x86_64 zsh
的相同问题,但是arch -x86_64 asdf install nodejs 14.17.4
没有问题,顺利运行了。 - erikdstockarch -x86_64 /bin/zsh
- amiabl