【问题标题】:CocoaPods on M1 (Apple Silicon) fails with ffi wrong architectureM1(Apple Silicon)上的 CocoaPods 因 ffi 架构错误而失败
【发布时间】: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

不确定这是否相关。

【问题讨论】:

    标签: cocoapods ffi apple-m1 rosetta


    【解决方案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 之前,我按照stackoverflow.com/questions/66128681/…中的步骤进行操作
        • 这有帮助,谢谢
        【解决方案4】:

        回答我自己的问题。我通过卸载有问题的 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。

        【讨论】:

        • 最后我发现这个解决方案有效,我尝试了一切,从使用 rbenv 安装新版本的 ruby​​,更新所有依赖项。谢谢你:)
        • 谢谢,完美解决问题。非常感谢!
        • 谢谢,完美解决了 MacBook Air m1 Flutter 项目设置问题。
        • 这就是解决方案!!!非常感谢
        • brew uninstall --ignore-dependencies ruby​​ 是必需的,而不是 brew uninstall ruby​​ --force
        猜你喜欢
        • 2021-04-03
        • 2021-09-01
        • 2021-03-02
        • 2022-01-06
        • 2021-09-11
        • 1970-01-01
        • 2021-08-13
        • 2022-01-10
        • 1970-01-01
        相关资源
        最近更新 更多