Mountain Lion あたりだと ruby-1.9.3-p385 のビルド時に以下のようなエラーが出る:
BUILD FAILED
(略)
Last 10 log lines:
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
regparse.c:582:15: error: implicit conversion loses integer precision: 'st_index_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
return t->num_entries;
~~~~~~ ~~~^~~~~~~~~~~
1 error generated.
make: *** [regparse.o] Error 1
整数の精度を落とすような暗黙的型変換の警告(-Wshorten-64-to-32
)と、警告をエラーにするオプション(-Werror
)によってビルドが失敗している。
これを解決するには brew install apple-gcc42
して CC=/usr/local/bin/gcc-4.2
すればいいという情報が色々と見つかるが、そんなことをしなくても警告を無視するだけでビルドは通る:
export CFLAGS=-Wno-error=shorten-64-to-32
# プリインストールの readline と OpenSSL は壊れているため、別途 Homebrew などでインストールしたものを使う
export CONFIGURE_OPTS="--with-openssl-dir=/path/to/dir --with-readline-dir=/path/to/dir"
rvm install ruby-1.9.3-p385
# or
rbenv install 1.9.3-p385
apple-gcc42 を使えば出ないはずの警告を無視することについて不安があるかもしれないが、 apple-gcc42 は警告のチェックが甘いだけである。
補足:homebrew で入れた openssl を使って Ruby をコンパイルすると SSL 利用時に証明書エラーが発生する場合の対応