dyld:找不到符号:_ffi_prep_closure_loc(在 Mac 上)

dyld: Symbol not found: _ffi_prep_closure_loc (on Mac)

我今天在我的 Mac 上针对我的 iPhone 模拟器做了一个常规 flutter run 并遇到了这些错误。

Error output from CocoaPods:
↳
    dyld: lazy symbol binding failed: Symbol not found: _ffi_prep_closure_loc
      Referenced from: /Users/toure/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
      Expected in: /usr/lib/libffi.dylib

    dyld: Symbol not found: _ffi_prep_closure_loc
      Referenced from: /Users/toure/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/ffi-1.13.1/lib/ffi_c.bundle
      Expected in: /usr/lib/libffi.dylib

如何解决 dyld: Symbol not found: _ffi_prep_closure_loc 错误?

我在 github issue 中发现了一个修复程序。

运行 我的 Mac 解决了问题。

gem uninstall ffi
brew reinstall libffi
export LDFLAGS="-L/usr/local/opt/libffi/lib"
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
gem install ffi

我决定分享这个,因为问题标题中的错误与我得到的不同。希望这可以节省一些时间。

我能够通过使用此标志重新安装该实用程序来解决此问题:

gem install ffi -- --disable-system-libffi

原来 ffi-1.13.1 正在使用 ffi_prep_closure_loc()system-libffi 对于 Mac 没有那个功能。

有关更多信息,请参阅 ffi 问题 #791

Toure 的解决方案,但对于较新的 Homebrew 安装:

gem uninstall ffi
brew reinstall libffi
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"
gem install ffi