gemをインストールをしようとして、以下のようなエラーが出た場合の対応方法。

自分の場合、M1のMacにgemをインストールしようとしたらこんな結果が返ってきちゃう。

Undefined symbols for architecture arm64:
  "_ruby_abi_version", referenced from:
     -exported_symbol[s_list] command line option
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [grpc_c.bundle] Error 1

とりあえず、gemコマンドに以下のようなオプション(--with-ldflags="-undefined dynamic_lookup")をつけて実行するとインストールができました。

私はgrpcというgemを入れようとしたときにこのエラーに遭遇。

$ gem install grpc -v 1.50.0 -- --with-ldflags="-undefined dynamic_lookup"

railsのGemfileに設定している場合はbundle configで事前に同様のオプションを設定しておいて、bundle installでOK

$ bundle config build.grpc --with-ldflags="-undefined dynamic_lookup"
$ bundle install

参考にした情報はこちらです。自分の場合、Rubyのリコンパイルは不要でした。その辺は環境によるかもです。

ちなみに、grpc 1.50.2からは上記の問題は発生しませんでした。gem側で解決してくれているみたいです。

この記事の環境情報

  • Ruby 3.1.3
  • grpc 1.50.0