问题描述
由于 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 解决方法)的步骤:
-
使用以下命令卸载 Ruby:
brew uninstall ruby --force
-
卸载 CocoaPods。首先,尝试使用
gem list --local | grep cocoapods
列出所有 CocoaPods 版本/组件。然后将它们一一卸载,就我而言:
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader
等
- 下一步,我可以重新安装 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
没有任何问题。