Closed2

mac で Gem native extension のビルドでエラーを解決するメモ書き

nasanasa

環境

:) % ruby --version
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin22]

:) % bundler -v
Bundler version 2.2.32

何が起きている?

以下3つのgemでビルドエラーが発生している。

  • nio4r 2.5.8
  • msgpack 1.4.2
  • grpc 1.55.0
/Users/xxx/.rbenv/versions/3.0.3/bin/ruby -I /Users/xxx/.rbenv/versions/3.0.3/lib/ruby/3.0.0 -r ./siteconf20230707-4689-ytzwcb.rb extconf.rb
checking for unistd.h... yes
checking for linux/aio_abi.h... no
checking for linux/io_uring.h... no
checking for sys/select.h... yes
checking for port_event_t in poll.h... no
checking for sys/epoll.h... no
checking for sys/event.h... yes
checking for sys/queue.h... yes
checking for port_event_t in port.h... no
checking for sys/resource.h... yes
creating Makefile

...
/Users/xxx/.rbenv/versions/3.0.3/include/ruby-3.0.0/ruby/internal/iterator.h:53:24: note: passing argument to parameter here
VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);

解決方法

llvmのclangではなくsystem標準のclangを利用する

:) % brew unlink llvm
Unlinking /opt/homebrew/Cellar/llvm/16.0.6... 742 symlinks removed.
nasanasa

調査ログ

vendor/bundle/ruby/3.0.0になっているのが怪しい?
今使っているのはruby 3.0.3

↓で再インストールしてみたけど解消せず

rbenv uninstall 3.0.3
rbenv install 3.0.3

clangのバージョン違いでコンパイルできていない説?
システム組み込みのclangのほうがバージョンが古いので違いそう。

:) % clang --version
Homebrew clang version 16.0.6
Target: arm64-apple-darwin22.3.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin

:) % /usr/bin/clang --version
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: arm64-apple-darwin22.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

とりあえずsystemの方を使ってみる

:) % brew unlink llvm
Unlinking /opt/homebrew/Cellar/llvm/16.0.6... 742 symlinks removed.

gemをインストールできた。
何だったのか。。。

:( % gem install nio4r -v 2.5.8
Fetching nio4r-2.5.8.gem
Building native extensions. This could take a while...
Successfully installed nio4r-2.5.8
Parsing documentation for nio4r-2.5.8
Installing ri documentation for nio4r-2.5.8
Done installing documentation for nio4r after 0 seconds
1 gem installed
このスクラップは2023/07/07にクローズされました