Closed2
mac で Gem native extension のビルドでエラーを解決するメモ書き
環境
:) % 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.
調査ログ
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にクローズされました