Today Kashyap asked how one can identify the compiler parameters passed when compiling a Ruby version. I was curious how to achieve this and like any confused developer started searching for and looking in the Ruby documentation. Searching for compiler parameters in ruby did not yield any interesting results and the group of constants with the RUBY_ prefix 1 loaded in Ruby did not include anything related to compiler flags. Then I came across this blog post 2 by Jan Lelis and I was curious what else RbConfig::CONFIG contains. This hash contains all the compiler flags used to compile the current Ruby VM.
This code snippet prints the hash.
#! /usr/bin/env ruby
require "rbconfig"
RbConfig::CONFIG.each do |k, v|
puts "#{k} - #{v}"
endWhen this is executed under Ruby 1.9.3p194 under OS X, a section of the output will look like this:
target_vendor - apple
target_os - darwin12.2.1
CC - gcc-4.2
CFLAGS - -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -I/Users/sdqali/.rvm/usr/include -fno-common -pipe
LDFLAGS - -L. -L/Users/sdqali/.rvm/usr/lib -L/usr/local/lib- These constants are
RUBY_COPYRIGHT,RUBY_DESCRIPTION,RUBY_ENGINE,RUBY_PATCHLEVEL,RUBY_PLATFORM,RUBY_RELEASE_DATE,RUBY_REVISIONandRUBY_VERSIONon Ruby 1.9.3p194. [return] - Jan Lelis: How to properly check for your Ruby interpreter, version and OS [return]