Help us understand the problem. What is going on with this article?

Ruby-FFI は --enabe-system-libffi 明示した方が良さそう

注記の追記

Windows だと本家の libffi は(一部)誤動作するようです。
Ruby-FFI が引用する libffi fork は Windows 向け fix が入っていて、本家にも PR してるけど、2019-08-13 現在まだ merge されていません。

要約

  • AWS A1 Instance で Ruby-FFI が seg fault したよ
  • Amazon Linux 2 の libffi-devel を使ったら seg fault しなかったよ
  • Ruby-FFI は内部に支流の libffi を持ってるよ
  • Ruby-FFI はシステムに libffi-devel 等が無い場合、内部の libffi をリンクするよ
  • Ruby-FFI では --enable-system-libffi を付けるとシステムの libffi の利用を強制できるよ

解法

with bundler

$ bundle config build.ffi --enable-system-libffi

ところで

支流の libffi とは

Ruby-FFI の .gitmodules に書いてあるリポジトリが http://sourceware.org/libffi/ に書いてあるリポジトリと違うので、支流と呼んでみました。
(前者は後者を fork したもののようです。)

--enable-system-libffi について

extconf.rb にて enable_config() で参照されています。
changelog によれば 2019-05-17 に追加されたようです。デキタテホヤホヤ。

なぜ初手で libffi-devel をインストールしなかったのか

数年前に Rails セットアップの最小手順を模索した際に、各 devel パッケージを yum install から除外してみて不都合ないか確認した結果、libffi-devel 要らねってなったのです。
当時は nokogiri に --use-system-libraries つけてなかったり、まぁ、トレンドは変わるのですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした