CRubyのビルド
code:bash
$ cd ruby
# ./configureを(再)生成
$ autoreconf
# prefixにインストール先のディレクトリを絶対パスで指定
$ .configure --prefix=/path/to/install --enable-shared
# 並列でコンパイル
$ make -j
$ make install
$ /path/to/install/bin/ruby -v
configure に渡すオプション
code:bash
# ヘルプを見る
$ ./configure --help
# コンパイラによる最適化を無効にする. デバッグ時に便利
$ ./configure optflags="-O0"
# インストール場所を絶対パスで指定する
$ ./configure --prefix=/path/to/dir
# rubyコマンドのほとんどをダイナミック リンクライブラリ(libruby.so)として外に出すオプション (よくわかってない)
# enc とかを見たいときは生成されたファイルが見えなくなってデバッグするときは微妙だったような(うろおぼえ)
$ ./configure --enable-shared
# macOSでビルドするときにつけてる opensslとreadlineへのpath
$ ./condigure --with-openssl-dir=brew --prefix openssl --with-readline-dir=brew --prefix readline --disable-libedit
# ruby をインストールするときの名前を変える. この場合 ruby-3.1 が生成される
$ ./configure --program-suffix=-3.1
# コンパイラを指定する(注)
$ ./configure CC=gcc
注: macOSの場合XCodeを入れるとgccにclangのaliasが張ってある。gccを使いたい場合はbrewなどでインストールする必要あり
make
code:bash
# 並列でコンパイル
$ make -j
$ make install
# test.rb を実行
$ make run
# 古いファイルを削除
$ make clean
# 全削除
$ make distclean
デバッグ
code:bash
# $ ./configure optflags="-O0" しといたほうがいい
# gdb を使ってデバッグ
$ echo "str = 'hello'\nstr << ' world'.freeze\nputs str" > ./hello.rb
$ gdb --args ./ruby ./hello.rb
めっちゃ参考にしてる