Reputation: 3551
Running 'pod install' on a M1 MacBook failed for me due to an ffi issue, as described here.
I followed some of the workarounds (I guess I tried all of them in various order), but now I get a slightly different error:
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
So, it seems I now have ffi, but with a wrong architecture? How can I fix this? This happens with/without running the terminal in Rosetta mode.
One of the proposed workarounds did not succeed for me, by the way. When I try:
sudo arch -x86_64 gem install ffi
I get:
arch: posix_spawnp: gem: Bad CPU type in executable
Not sure if this is related.
Upvotes: 93
Views: 81655
Reputation: 1
For an error: incompatible architecture (have 'x86_64', need 'arm64'), you need to do the following:
gem list --local | grep cocoapods | awk '{print $1}' | xargs sudo gem uninstall
sudo gem install ffi
sudo gem install cocoapods
Upvotes: 0
Reputation: 1109
I tried almost everything and this was the only solution that worked for me:
uninstalling the cocoapods package through gem
sudo gem uninstall cocoapods
and reinstalling it with homebrew
brew install cocoapods
fixed my problem.
The problem was I installed cocoapods
through gem install instead of homebrew.
Upvotes: 20
Reputation: 4565
When i tried the x86_64:
sudo arch -x86_64 gem install ffi
linking shared-object ffi_c.bundle
ld: warning: ignoring file /Users/aa/.rbenv/versions/3.0.1/lib/libruby.3.0.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:
"_rb_ary_detransient", referenced from:
_memory_put_array_of_int8 in AbstractMemory.o
so I tried:
sudo arch -arm64e gem install ffi
sudo arch -arm64e gem install cocoapods
then pod install
worked!
I also had to run rbenv init
and place the eval in ~/.zshrc
to get the right ruby version working.
Upvotes: 10
Reputation: 105
All I did for my case was run the following command to pod install. I didn't have to uninstall ruby or cocoapod
arch -x86_64 pod install
Upvotes: 4
Reputation: 335
just run this code, already fix
brew uninstall --ignore-dependencies ruby
Upvotes: 0
Reputation: 714
I got it working by first cleaning up all previously installed pods:
pod deintegrate
Then installing them again using this command:
arch -x86_64 pod install
Upvotes: 14
Reputation: 311
I got this error while setting up capacitor project on my new macbook with m1 chip. However, if you want to use capacitor, flutter or React Native, you will get this error because this is a framework independent, computer-related problem.
Ruby and cocoapods must be installed on your computer. In my case, running the following commands one by one worked.
1.
brew install ruby
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
brew install cocoapods
and, you are ready now.
pod install
Upvotes: 8
Reputation: 6134
I agree with Datasun's answer. But currently we can use arm64
instead of x86_64
in M1 Macbook.
I reinstall ruby
and ran the lines in terminal:
gem uninstall cocoapods
gem uninstall cocoapods-core
gem uninstall cocoapods-downloader
gem uninstall ffi
gem install ffi
Upvotes: 5
Reputation: 2851
This described the exact problem that I was having. However, none of the solutions worked. In the end, this is what helped me solve the problem:
brew unlink libyaml && brew link libyaml
brew unlink openssl && brew link --force openssl
Reference: https://stackoverflow.com/a/24902917/1809053
Upvotes: 1
Reputation: 71
For me, I had to do these extra things after following @Datasun:
brew install ruby
and
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
Upvotes: 2
Reputation: 480
I agree with Datasun's answer. But I managed to follow roughly the same steps which gave a a functioning outcome, that I thought to be better or just as good. I ran the lines in terminal:
brew uninstall --ignore-dependencies ruby
then
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader
after this I wanted to Homebrew the cocoapods so I used:
brew install cocoapods
(you may need to use reinstall)
Upvotes: 36
Reputation: 4076
As said Datasun I removed cocoapods
gem list --local | grep cocoapods | awk '{print $1}' | xargs sudo gem uninstall
and then run:
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
without any problem.
Upvotes: 46
Reputation: 3551
Answering my own question. I fixed the ffi issue by uninstalling my faulty Ruby version and CocoaPods, then I used the -x86_64 arch to reinstall ffi and CocoaPods.
These are the steps I did to get back to a working state (and to apply the M1 workarounds for ffi):
Uninstall Ruby with: brew uninstall ruby --force
Uninstall CocoaPods. At first, try to list all CocoaPods versions / components with gem list --local | grep cocoapods
. Then uninstall them one by one, in my case:
sudo gem uninstall cocoapods
sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-downloader
etc.
sudo arch -x86_64 gem install ffi
sudo arch -x86_64 gem install cocoapods
Once done, I could run pod install
as expected. Note that I had the Terminal open all the time in standard mode - no Rosetta required.
Upvotes: 151