gem install
に使用するコンパイラを指定するにはどうすればよいですか?バッシュで"gem install"のコンパイラを指定する方法は?
CC=gcc gem install ...
私のシステムではまだsolaris studioを使用しているので、役に立たない。
gem install
に使用するコンパイラを指定するにはどうすればよいですか?バッシュで"gem install"のコンパイラを指定する方法は?
CC=gcc gem install ...
私のシステムではまだsolaris studioを使用しているので、役に立たない。
sqlite3-rubyの場合、2011年1月コミット以降のメソッドがサポートされています。しかし、一般的に では、これを無効にすることはできません。なぜなら、rubygemsの動作のためです。それは
梱包を解凍します。
&は、「extensions」属性(通常は特別に書かれたextconf.rbファイルへの パス)を使用していることを検出します。
このファイルを実行してMakefileを生成します。明示的に のextconf.rbの作者がenv変数を尊重すると述べていない限り、それらは無視されます。あなたは変数でMakefileを生成します
CC=gcc gem install sqlite3-ruby
extconf.rbはバッシュで実行した場合たとえば、sqlite3の-ルビー宝石の最新 バージョンでは、そのextconf.rbはは
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
ので、ラインを持っていますCC
が に設定されています。gcc
に設定してください。
Makefileが生成された後、rubygemsは、エクステンションをコンパイルするためにmake
ユーティリティを実行します。
RubyGemsのは、私たちは、追加のコマンドラインをメイク用 パラメータを指定することが許可されている場合、理論的に、我々はその-e
オプションを使用することができ、その後のすべてのextconf.rbはの 作者に依存しません。 (-e
オプションは、メイクファイルから 変数を超える環境の優先順位から取られた変数を与えます。)RVMを使用して
、OS X上で、私はGCCコンパイラの永続的な変化を達成するために、次のファイルを変更します。
~/.rvm/rubies/ruby-1.X.Y/lib/ruby/1.X/i686-darwin10.8.0/rbconfig.rb
は、このファイルでは、私は次を発見した:
CONFIG["configure_args"] = " ...' 'CC=/usr/bin/gcc-4.2'"
CONFIG["CC"] = "/usr/bin/gcc-4.2"
CONFIG["CPP"] = "/usr/bin/gcc-4.2 -E"
私はもはや私の箱だけは/ usr/binに/ gccの上で、このGCC-4.2コンパイルを持っています。 gccでgcc-4.2を置き換えると、古いgemをインストールするのに問題なく動作しました。これは、私がアップグレードできない古い環境で働いている最中です。
忘れてしまったのは、sqlite3-ruby -v1.2.5 gemです。 – Alex