M1(Apple Silicon)上的 CocoaPods 因 ffi 架构错误而失败
Posted
技术标签:
【中文标题】M1(Apple Silicon)上的 CocoaPods 因 ffi 架构错误而失败【英文标题】:CocoaPods on M1 (Apple Silicon) fails with ffi wrong architecture 【发布时间】:2021-06-13 02:17:49 【问题描述】:由于 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
不确定这是否相关。
【问题讨论】:
【参考方案1】:对我来说,在关注@Datasun 之后,我不得不做这些额外的事情:
brew install ruby
和
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
【讨论】:
【参考方案2】:我同意 Datasun 的回答。但是我设法遵循了大致相同的步骤,这些步骤产生了一个有效的结果,我认为它更好或一样好。我在终端运行了这些行:
brew uninstall --ignore-dependencies ruby
然后
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader
之后我想自制可可足类,所以我使用了:
brew install cocoapods
(您可能需要重新安装)
【讨论】:
【参考方案3】:正如 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
没有任何问题。
【讨论】:
这太棒了,感谢您让复制和粘贴变得更容易 对于任何尝试上述方法并收到no podfile
错误的人的后代,我运行了上述不包括pod install
然后运行bundle install
,现在运行顺利
这仍然失败:sudo arch -x86_64 gem install ffi
。还有其他命令可以尝试吗?
你节省了我的一天,但我使用带有 M1 芯片的 Mac 并且在安装 rbenv 3.0.1 之前,我按照***.com/questions/66128681/…中的步骤进行操作
这有帮助,谢谢【参考方案4】:
回答我自己的问题。我通过卸载有问题的 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。
【讨论】:
最后我发现这个解决方案有效,我尝试了一切,从使用 rbenv 安装新版本的 ruby,更新所有依赖项。谢谢你:) 谢谢,完美解决问题。非常感谢! 谢谢,完美解决了 MacBook Air m1 Flutter 项目设置问题。 这就是解决方案!!!非常感谢 brew uninstall --ignore-dependencies ruby 是必需的,而不是 brew uninstall ruby --force以上是关于M1(Apple Silicon)上的 CocoaPods 因 ffi 架构错误而失败的主要内容,如果未能解决你的问题,请参考以下文章
Docker buildx 与 Apple M1 Silicon 上的节点应用程序 -standard_init_linux.go:211:exec 用户进程导致“exec 格式错误”
如何在 Apple Silicon (ARM / M1) 上安装 SciPy
解决在Apple Silicon (M1)安装php MongoDB扩展失败
在 Apple Silicon M1 Mac 上安装 Cryptography