Reputation: 3516
I did a regular flutter run
on my Mac, targeting my iPhone simulator today and got these errors.
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
How do you solve the dyld: Symbol not found: _ffi_prep_closure_loc
error?
Upvotes: 9
Views: 9987
Reputation: 1560
for M1 v13 Ventura, you should be able to install older version with:
gem install ffi -v '1.11.1' -- --enable-libffi-alloc
ref. https://github.com/ffi/ffi/issues/800#issuecomment-748434595
but problem was when running after rake db:create
got again same error.
So only what did help, like mentioned in reference:
gem install ffi -v '1.14.0'
And changing also to this version in gemfile.lock
Upvotes: 0
Reputation: 1261
Toure's solution, but for newer Homebrew installs:
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
Upvotes: 2
Reputation: 2504
I was able to resolve this by reinstalling the utility with this flag:
gem install ffi -- --disable-system-libffi
Turns out ffi-1.13.1
is using ffi_prep_closure_loc()
and system-libffi
for Mac doesn’t have that function.
See ffi
issue #791 for more.
Upvotes: 6
Reputation: 3516
I found a fix buried in a github issue.
Running this on my Mac solved the problem.
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
I decided to share this since the error in the title of the issue is different from the one that I got. Hope this can save someone some time.
Upvotes: 18