Как я могу указать, какой компилятор следует использовать для gem install
? В Bash
CC=gcc gem install ...
не помогает, потому что он по-прежнему использует студию solaris в моей системе.
Как я могу указать, какой компилятор следует использовать для gem install
? В Bash
CC=gcc gem install ...
не помогает, потому что он по-прежнему использует студию solaris в моей системе.
Для sqlite3-ruby ваш метод поддерживается с января 2011 года. Но в основном невозможно переопределить это из-за того, как работает rubygems. Это
Распакует драгоценный камень.
Входит в спецификацию и обнаруживает, что использует атрибут 'extensions' - обычно путь к специально написанному файлу extconf.rb.
Запускает этот файл для создания Makefile. Если автор extconf.rb явно не указан сказал, чтобы соблюдать env переменные, они игнорируются. Например, в последних версии sqlite3-ruby gem, его extconf.rb имеет строку
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
Итак, если вы запустите Bash
CC=gcc gem install sqlite3-ruby
extconf.rb будет генерировать Makefile с переменной CC
в ней, которая
установите gcc
или что угодно.
После создания Makefile rubygems выполняет утилиту make
для компиляции
расширение.
Теоретически, если rubygems позволили нам указать дополнительную командную строку
параметры для make, мы могли бы использовать его опцию -e
, а затем не зависеть от
авторы extconf.rb вообще.
(-e
параметр дает переменные, взятые из приоритета среды над
переменные из make файлов.)
Используя 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"
У меня больше нет компиляции gcc-4.2 на моем ящике, только /usr/bin/gcc. Замена gcc-4.2 на gcc работала нормально для установки старого драгоценного камня. Это пока я заезжал в угол, работая в старой среде, которую я не могу обновить.