Ruby インタプリタ作成時に設定された情報を格納したモジュールです。
require 'rbconfig'
DESTDIR
TOPDIR
CONFIG
設定値を格納したハッシュです。以下のキーと値を持ちます。
Ruby をコンパイルしたソースディレクトリ
Ruby のインストール先の基準ディレクトリ
ruby インタプリタのファイル名
実行ファイルの拡張子
シェルのパス名
C コンパイラのオプション
C プリプロセッサのオプション
C++ コンパイラのオプション
Fortran コンパイラのオプション
リンカオプション
ライブラリ
アーキテクチャ依存の実行ファイルのインストール先ディレクトリ
実行ファイルのインストール先ディレクトリ
管理者用実行ファイルのインストール先ディレクトリ
他のプログラムから実行される実行ファイルのインストール先ディレクトリ
アーキテクチャに依存しないデータのインストール先ディレクトリ
設定ファイルのインストール先ディレクトリ
Ruby の major バージョン番号(1.6.5の1)
Ruby の minor バージョン番号(1.6.5の6)
Ruby の teeny バージョン番号(1.6.5の5)
実行するシステムの情報 (?)
例: C:\>ruby -v -r rbconfig -e "p Config::CONFIG['host']" ruby 1.8.1 (2003-12-25) [i386-cygwin] "i686-pc-cygwin"
生成されたコードを実行するシステムの情報
例: C:\>ruby -v -r rbconfig -e "p Config::CONFIG['target']" ruby 1.8.1 (2003-12-25) [i386-cygwin] "i386-pc-cygwin"
ビルドしたシステムの情報
例: C:\>ruby -vrrbconfig -e "p Config::CONFIG['build']" ruby 1.8.1 (2003-12-25) [i386-cygwin] "i586-pc-linux-gnu"
ビルドに使われた C コンパイラ
ビルドに使われた C プリプロセッサ
ビルドに使われた コンパイラコンパイラ
ビルドに使われたライブラリアン
ビルドに使われたライブラリ操作コマンド (?)
Windows のリソース操作コマンド
シンボリックリンク作成コマンド
オブジェクトファイル(コンパイルだけされてリンク前のファイル)の拡張子
ruby本体にリンクされているオブジェクトファイル (?)
ダイナミックリンクライブラリの拡張子
オブジェクトファイルからシンボルを切り捨てるコマンド
ビルド途中に作成される機能限定版rubyのcompile_dirからの相対パス
ruby共有ライブラリの名前
configureで--enable-sharedだったかどうか(値は"yes"または"no")
実行対象となるアーキテクチャ。RUBY_PLATFORMと同じ。
サイトごとの拡張ライブラリインストール時にarchの代わりに利用される値。 通常はarchと同じになるが、特定のプラットフォーム(mswin32・mingw32)では 異なる。 拡張ライブラリにバイナリ互換性があるarch間で、拡張ライブラリを共有する ために用いられる。
ビルド時のconfigureの引数。
rubyのバージョン(例:"1.6")
ビルド時の作業ディレクトリ。
MAKEFILE_CONFIG
CONFIG と同じですが、その値は以下のような形 で他の変数への参照を含みます。
MAKEFILE_CONFIG["bindir"] = "$(exec_prefix)/bin"
これは、Makefile の変数参照の形式で MAKEFILE_CONFIG は、 Makefile 作成の際に利用されることを想定しています。
require 'rbconfig' print <<-END_OF_MAKEFILE prefix = #{Config::MAKEFILE_CONFIG['prefix']} exec_prefix = #{Config::MAKEFILE_CONFIG['exec_prefix']} bindir = #{Config::MAKEFILE_CONFIG['bindir']} END_OF_MAKEFILE => prefix = /usr/local exec_prefix = $(prefix) bindir = $(exec_prefix)/bin
Config.expand は、このような参照を解決する メソッドとして rbconfig.rb 内部で利用されています。 (CONFIG 変数は、MAKEFILE_CONFIG の内容から Config.expand を使って生成されています)
require 'rbconfig' p Config.expand(Config::MAKEFILE_CONFIG["bindir"]) # => "/usr/local/bin"