当前位置: 首页 > 知识库问答 >
问题:

M1(苹果硅)上的CocoaPods因ffi错误的架构而失败

柯正谊
2023-03-14

由于ffi问题,我在M1 MacBook上运行“pod安装”失败,如下所述。

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

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

不确定这是否相关。

共有3个答案

华英睿
2023-03-14

我同意Datasun的回答。但是我设法按照大致相同的步骤给出了一个有效的结果,我认为更好或一样好。我在终端运行了这些行:

brew uninstall --ignore-dependencies ruby

然后呢

sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader

在此之后,我想自制cocoapods,所以我使用:

brew install cocoapods

(您可能需要使用重新安装)

翟缪文
2023-03-14

正如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

没有任何问题。

慕铭
2023-03-14

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

以下是我为回到工作状态(以及为外国金融机构应用M1变通办法)所做的步骤:

>

  • 卸载Ruby时使用:brew卸载Ruby--force

    卸载CocoaPods。首先,尝试使用gem list--local|grep cocoapods列出所有CocoaPods版本/组件。然后一个接一个地卸载它们,在我的情况下:

    sudo gem卸载cocoapods

    sudo gem卸载cocoapods-core

    sudo gem卸载cocoapods-Downloader

    等。

    sudo arch-x86_64gem install ffi

    sudo arch-x86_64gem安装cocoapods

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

  •  类似资料:
    • 我有一个Flutter项目,我正试图在iOS上运行。它在我的基于英特尔的Mac电脑上正常运行,但在我的新的基于苹果硅的M1 Mac电脑上,它无法安装吊舱。 基于Github解决方案,我尝试使用rosetta运行Terminal,但问题仍然是:https://github.com/CocoaPods/CocoaPods/issues/9907#issuecomment-655870749 意识到现在

    • 我刚刚尝试在Apple Mac Pro上运行Apache Flink的基本示例,新的M1处理器使用Rosetta 2兼容层。 不幸的是,它在以下堆栈跟踪中失败: 所以我的问题是,有人让它运行了吗?有可能在苹果硅上执行Flink工作吗? 编辑(13.04.2021)顺便说一句:使用Rosetta兼容层运行时发生此错误。因此,不幸的是,这并不能解决当前的问题。 编辑(2021年4月14日,回应理查德·

    • 在我之前的基于英特尔的Mac电脑上,我曾经包括 在我的shell资源文件中。新的基于ARM的Apple芯片上的正确编译标志是什么?????似乎还没有很多资源,任何指针都非常感谢!

    • 新的Xcode 12是否支持为不在新的Apple Silicon上运行的计算机制作应用程序?我想知道这一点,因为我需要为自己制作一个新的应用程序。

    • 我正在开发具有金属计算功能的人工智能应用程序。如从Metal Debugger捕获的以下图片所示:预览图片错误,而附件视图中的图片正确。最终结果与预期的预览图片相同。 此错误没有出现在x86_64Macbook中,而是出现在M1 Macbook中。我认为将您的Metal应用程序带到Apple硅Mac中可能提到了一些问题(例如并发读取)。 如何调试它?

    • 是否需要专门发布OpenJDK来支持新的苹果M1芯片? 我看到目前有下载用于macOS/OS的JDK