M1 (Apple Silicon) 上的 CocoaPods 因 ffi 错误的架构而失败

问题描述

由于 ffi 问题,在 M1 MacBook 上运行“pod install”失败,如 here 所述。

我遵循了一些解决方法(我想我以不同的顺序尝试了所有方法),但现在我得到了一个稍微不同的错误

LoadError - dlopen(/opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle,9): no suitable image found.  Did find:
    /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle: mach-o,but wrong architecture
    /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle: mach-o,but wrong architecture - /opt/homebrew/lib/ruby/gems/3.0.0/gems/ffi-1.15.0/lib/ffi_c.bundle

所以,我现在似乎有 ffi,但架构错误?我怎样才能解决这个问题?在 Rosetta 模式下运行/不运行终端都会发生这种情况。

顺便说一下,其中一个提议的解决方法对我来说没有成功。当我尝试时:

sudo arch -x86_64 gem install ffi

我明白了:

arch: posix_spawnp: gem: Bad cpu type in executable

不确定这是否相关。

解决方法

回答我自己的问题。我通过卸载有问题的 Ruby 版本和 CocoaPods 解决了 ffi 问题,然后我使用 -x86_64 arch 重新安装了 ffi 和 CocoaPods。

这些是我回到工作状态(并为 ffi 应用 M1 解决方法)的步骤:

  1. 使用以下命令卸载 Ruby:brew uninstall ruby --force

  2. 卸载 CocoaPods。首先,尝试使用 gem list --local | grep cocoapods 列出所有 CocoaPods 版本/组件。然后将它们一一卸载,就我而言:

sudo gem uninstall cocoapods

sudo gem uninstall cocoapods-core

sudo gem uninstall cocoapods-downloader

  1. 下一步,我可以重新安装 ffi 和 CocoaPods:

sudo arch -x86_64 gem install ffi

sudo arch -x86_64 gem install cocoapods

完成后,我可以按预期运行 pod install。请注意,我一直在标准模式下打开终端 - 不需要 Rosetta。

,

正如Datasun所说,我删除了cocoapods

gem list --local | grep cocoapods | awk '{print $1}' | xargs sudo gem uninstall

然后运行:

brew remove rbenv
sudo rm -rf ~/.rbenv
sudo arch -x86_64 gem install ffi
sudo arch -x86_64 gem install cocoapods
brew install rbenv
rbenv install 3.0.1
rbenv global 3.0.1

pod install

没有任何问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...