¿Cómo puedo especificar qué compilador se debe usar para gem install
? En Bash¿Cómo especificar el compilador para "joya de instalación"?
CC=gcc gem install ...
no ayuda, porque todavía usa el estudio solaris en mi sistema.
¿Cómo puedo especificar qué compilador se debe usar para gem install
? En Bash¿Cómo especificar el compilador para "joya de instalación"?
CC=gcc gem install ...
no ayuda, porque todavía usa el estudio solaris en mi sistema.
Para sqlite3-ruby, su método es compatible desde enero de 2011 commit. Pero en general no es posible anular esto debido a cómo funcionan los rubygems. Es
Desempaquetar la gema.
se mira en él spec & descubre que utiliza el atributo 'extensiones' - por lo general un camino a un archivo extconf.rb especialmente escrito.
Ejecuta ese archivo para generar un Makefile. A menos que el autor de extconf.rb explique explícitamente en honor de las variables env, se ignorarán. Por ejemplo, en la últimas versiones de gema sqlite3-rubí, su extconf.rb tiene una línea
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
Así que si se ejecuta en Bash
CC=gcc gem install sqlite3-ruby
extconf.rb generará el Makefile con la variable CC
que es establecido en gcc
o lo que quieras.
Después de generar el archivo Makefile, rubygems ejecuta la utilidad make
para compilar la extensión .
En teoría, si rubygems nos permitieron indicar la línea de comandos adicional parámetros para el maquillaje, podríamos utilizar su criterio -e
y luego no dependen de autores de extconf.rb en absoluto. (-e
opción da las variables tomadas de la precedencia medio ambiente durante variables a partir de los archivos make.)
Usando RVM, en OS X, cambio el siguiente archivo para lograr un cambio permanente del compilador gcc:
~/.rvm/rubies/ruby-1.X.Y/lib/ruby/1.X/i686-darwin10.8.0/rbconfig.rb
en este archivo que he encontrado lo siguiente:
CONFIG["configure_args"] = " ...' 'CC=/usr/bin/gcc-4.2'"
CONFIG["CC"] = "/usr/bin/gcc-4.2"
CONFIG["CPP"] = "/usr/bin/gcc-4.2 -E"
ya no tengo este gcc-4.2 compila en mi caja, solamente/usr/bin/gcc. Reemplazar gcc-4.2 por gcc funcionó bien para instalar una gema antigua. Esto es mientras estoy siendo arrinconado trabajando en un ambiente antiguo que no puedo actualizar.
se olvidó de mencionar, es la gema sqlite3-ruby -v1.2.5 – Alex