はじめに
忘れてしまうので備忘録と解決策の共有になります。主にMac OSの方を想定してます。
ざっくり診断
- OSの更新やXcodeのアップデートによってXcode(というよりコマンドラインツール?)がインストールできてないと発生すると思われる。
- ffiのバージョンによって発生すると思われる。
対応方法
・ Xcodeがインストールされてないとき
Xcodeをインストールする。
# インストール
# すでにインストールされている場合は、 xcode-select: error: command line tools are already installed, use "Software Update" to install updates が出力される。
xcode-select --install
メモ
このパターンに該当する場合は、エラーメッセージにYou have to install development tools first
みたいなメッセージが出てたと記憶。
ちなみに、利用規約に同意していない場合にも発生するので注意。
参考:
【解決方法】Macで gem ffi の インストール (アップデート) に 失敗する
・ ffiのバージョンを変えてもいいとき(バージョン更新してもいいとき)
ffiのバージョンを更新する(一番手取り早い気がする)。
# ffiのバージョン更新
bundle update ffi
メモ
参考元の記事だとダウングレード〜と書かれているが最新のものにしても直ったのである特定のバージョンで発生すると思われる。
参考:
ffi (1.9.21) instalation fails in linux
・ ffiのバージョンを変えたくないとき
オプションをつけて対応する。
# bundleのcondigに次のフラグをセット
bundle config --local build.ffi "--with-cflags=-Wno-implicit-function-declaration"
bundle install
メモ
参考元の記事を読むに、MacOSでC言語などのコードを暗黙的にbuildしようとするとエラーを出す、というのがデフォルト設定らしい。
このオプションをつけることで明示的になるからエラーが出なくなる(と思われる)。
参考:
Native extension won’t compile on macOS 10.16/11.0 Big Sur beta