2
3

mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')

Last updated at Posted at 2023-10-04

エラー内容

rails newしようとしたところ次のエラーが発生。

$ rails new .
<internal:/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:148:in `require': dlopen(/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle, 0x0009): tried: '/Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/stringio.bundle' (no such file), '/usr/lib/stringio.bundle' (no such file) - /Users/hoge/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/stringio-3.0.8/lib/stringio.bundle (LoadError)

エラー内容から、arm64eアーキテクチャが必要なところx86_64で呼び出しされていることが原因だと判明。

解決方法

以下コマンドを実行

$ rbenv uninstall 3.2.0
$ arch -arm64e rbenv install 3.2.0
$ gem install bundler
$ gem install rails

arm64e向けのrubyをインストールすることでRubyとその関連のgemもarm64e向けにコンパイルされました。
再度rails newを実行しようとしたところうまくいきました。

プラスの学び

x86_64

現在広く使われるコンピュータのアーキテクチャであり64ビットのx86アーキテクチャの拡張版。「複雑な処理」を「少ない命令」で実行しようとする思想を持ち、高速な演算、互換性などが特徴。

arm64e

ARM社が開発したCPUアーキテクチャの一つ。「単純な命令のみを備えて効率を向上させよう」という思想を持ち、スマホ・タブレット・サーバーなどに利用され、高いエネルギー効率と高速処理、セキュリティ向上などが特徴。

なんとなーくで学習してしまっていたのでCPUアーキテクチャの復習になりました!
こちらの記事で詳しく書いてらっしゃる方がいたので勉強になりました!
https://qiita.com/Lion_rion/items/bd17381031648fabaa81

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3