¿Cómo instalo GCC a través de Homebrew?

Estoy usando Homebrew exclusivamente (es decir, no uso ni usaré MacPorts o Fink). También quiero mantener las instalaciones manuales al mínimo. 1

… Pero, ¿cómo puedo instalar GCC?

En primer lugar, por supuesto, instalé Xcode, pero la versión actual no se envía con un GCC decentemente actualizado (necesito al menos 4.5, pero preferiría el más reciente). De hecho, no se envía. con un GCC adecuado (solo envía Clang) y eso parece ser un problema para Homebrew...

Conozco una lista de compiladores cruzados y GCC personalizados, pero, de hecho, todas esas instalaciones requieren un GCC ya instalado; al menos, brewfallar con errores de vinculación en Lion que atribuyo a Clang, y -use-gccno funciona por obvio. razones.

brew doctorsolo menciona lo que ya sé, que no hay GCC (4.2.x) instalado.


1 Previamente mezclé MacPorts, Homebrew y algunas instalaciones manuales y terminé con un infierno de mantenimiento y control de versiones. No quiero ir allí de nuevo.

¿Cuál es la salida de gcc --version? Obtengo i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)y simplemente instalé Xcode desde el MAS. Además, ¿cuál es la salida de echo $PATH?
@Gio Obtuve el mismo resultado. $PATHes lo habitual (este es un sistema casi en blanco, después de todo): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… pero no creo que esto importe. Las fórmulas proporcionadas por homebrew-alt simplemente están desactualizadas y no funcionan con Clang.
¿Por qué usar Homebrew? MacPorts es bueno para administrar múltiples versiones de compiladores. Y MacPorts puede hacer todo lo que Homebrew puede hacer.
@JeffBurdges Homebrew es mejor. En casi cualquier categoría.
¿Cómo es eso? Para ser honesto, no me gusta Homebrew principalmente porque carece de (a) descripciones de paquetes y (b) paquetes matemáticos. En general, MacPorts tiene quizás seis veces más paquetes que Homebrew, pero sí, son los paquetes oscuros los que faltan. Estoy contento con MacPorts en general, aunque obviamente desearía que se integraran con administradores de paquetes de idiomas como CPAN, CTAN, Caball, etc.
@Jeff Personalmente, todavía no he encontrado un paquete que no esté en Homebrew (a pesar de esta pregunta). No puedo hablar de paquetes matemáticos. Las descripciones de los paquetes existen ( brew info …). Aparte de todas las demás ventajas, su usabilidad es mucho más agradable, su interfaz más moderna y la creación de fórmulas propias es mucho más fácil.
Homebrew tiene descripciones de paquetes solo para

Respuestas (7)

Vi a alguien vincular a esta publicación anterior hoy. La mejor manera de instalar GCC en homebrew en este momento es simplemente brew install gcc. Si tiene instaladas las herramientas de línea de comandos de XCode (son independientes de XCode; puede instalarlas con xcode-select --install), se instalará una versión precompilada (que es muy rápida).

Ok, ¿y si ejecuto xcode-select --instally arroja xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Luego enumero las actualizaciones de software ejecutando softwareupdate -ly no arroja nada para actualizar (una lista vacía), lo que significa que las herramientas de línea de comandos XCode están instaladas.
No estoy 100% claro en esto, pero creo que macOS considera que Xcode es un reemplazo o un superconjunto de CLT, pero Homebrew no. Puede obtener una descarga .pkg aquí: developer.apple.com/download/more

Solución casera

Para responder a mi propia pregunta, ahora tiene una fórmulahomebrew-versions bastante actualizada de GCC . Se puede instalar usando

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

Donde [flags]debe incluir todos los idiomas requeridos, por ejemplo ( --enable-cxx --enable-fortran).

Esto instalará los ejecutables con un sufijo, es decir, gccse debe acceder a ellos gcc-versionpara evitar conflictos. Si es necesario, se pueden crear enlaces simbólicos apropiados para que esta versión sea la predeterminada.

Instalación manual

Alternativamente , un GCC actualizado (en el momento de escribir este artículo) se puede compilar manualmente usando el siguiente script de shell:

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

Esto colocará a GCC en la ruta /usr/gcc-4.7.0. Ahora todo lo que necesita hacer es crear enlaces simbólicos a los ejecutables o agregar el bindirectorio a la $PATHvariable.

Al tratar de compilar una versión funcional de Wine, también me encontré con el problema de un gcc faltante; desafortunadamente, instalar v4.7 a través de homebrew me dio algunos errores; así que opté por Apple v4.2 usando brew tap homebrew/dupesseguido de brew install apple-gcc42. Esto me ayudó a obtener un gcc y un vino que funcionaran. También puede obtener los archivos binarios (como lo hace homebrew) desde aquí: r.research.att.com/tools
@iolsmit Definitivamente debería intentar instalar GCC 4.7 nuevamente con un Homebrew limpio y actualizado. Debería funcionar como un encanto. De lo contrario, informe un error a los mantenedores de Homebrew-dupes.
brew tap homebrew/dupes; brew install gcc --use-llvm. Consulte github.com/Homebrew/homebrew-dupes/issues/20
@KonradRudolph donde sea que mire, ¡estás respondiendo las preguntas que estoy haciendo! Gracias :)
Esto está FUERA DE FECHA AHORA.
@Warren No hay necesidad de gritar, pero gracias por el recordatorio, porque yihang en realidad ha publicado una respuesta mejor actualizada que ahora he aceptado.
Excelente. Hice un poco de edición en este para que esté más cerca de la verdad pero aún sea demasiado complicado.

La solución proporcionada por @Konrad Rudolph ya no es del todo correcta, ya que la fórmula GCC que mencionó se movió de homebrew/dupesa homebrew/versions. Puede elegir qué versión de GCC instalar. Por ejemplo, al momento de escribir esta respuesta, están disponibles las versiones 4.5, 4.7 y 4.8. Puede comprobar qué versiones están disponibles aquí .

En resumen, puede instalar GCC 4.8 usando

brew tap homebrew/versions
brew install [flags] gcc48

Puede ver las banderas de instalación disponibles usando

brew options gcc48
Intenté esto y lo conseguí instalar, pero muere así:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
@WarrenP ¿Instalaste con alguno [flags]? En mis máquinas, instalé sin banderas y funciona bien. ¿Por qué no intenta llamar gcc-4.8sin ningún archivo de entrada y ve si obtiene un error fatal? También intente ls /usr/local/Cellar/gcc48/4.8.0/biny vea si ese directorio contiene gcc-4.8.
Contiene gcc-4.8 y gcc-4.8 --versionse ejecuta, pero no puede ejecutarse en la herramienta secundaria nombrada as, por lo que muere.
Hmm... Francamente, no tengo idea de cómo resolver esto. Tal vez tengamos que esperar a algún usuario más experimentado...
¿Cómo agregar g++como comando en mi terminal? ¿Tengo que vincular software /usr/local/Cellar/gcc48/4.8.1/bin/g++48en mi /usr/bin?
@nkint O eso o agrega alias g++='g++-4.8'tu .bashrc.

Yo también tuve este problema. Además, necesito usar gfortran, que no viene con la instalación estándar (obsoleta) de llvm-gcc de Mac.

Descubrí que las compilaciones de computación de alto rendimiento de gcc están actualizadas y funcionan muy bien en Lion.

Intenté esto. No solo no funcionó, sino que la técnica de instalación que está usando es bastante peligrosa. Me tomó cerca de una hora deshacer cuidadosamente todo.
Oh, debería haber dicho que no lo instalo como él sugiere. Simplemente descomprimo el archivo y hago un enlace simbólico al binario que quiero, asegurándome de que el enlace simbólico esté en algún lugar de mi RUTA. Por lo general, esto se hace agregando algo "local" a mi ruta, como ~/bin/ o algo así.
Sí, eso sería mucho más sensato. Su procedimiento de instalación es una locura y debería haberlo asumido en lugar de intentarlo a ciegas.

En caso de que alguien mire este hilo anterior, parece que homebrew/versions, utilizado en la respuesta actualmente aceptada, ha quedado obsoleto a favor de homebrew/core . Solo brew install <formula>corre

¿Puede explicar cómo tiene que ver esto con la pregunta del OP, que es cómo instalar GCC a través de Homebrew?
@fsb La respuesta está actualizada.
Esto es más un comentario sobre la respuesta aceptada. No debería ser una respuesta en sí misma porque no aborda la pregunta de los OP. Una vez que tenga suficiente reputación , podrá agregar comentarios y hacer preguntas de seguimiento. Para ganar reputación, responda preguntas que sean claras y concisas .
¿Debería hacerse una nueva pregunta para especificar la versión de brew donde esto cambia? Arreglar esta publicación anterior parece poco beneficio, gran retraso.
Si tuviera suficientes puntos de reputación, habría comentado sobre la solución aceptada. Siéntase libre de hacerlo usted mismo.

Puede probar esto: https://github.com/kennethreitz/osx-gcc-installer : lo he usado con éxito después de actualizar a Lion para compilar paquetes con Homebrew y otros (Ruby).

Del leeme:

Instalador OSX GCC Descargar e instalar el instalador masivo de Xcode es una gran molestia si solo desea GCC y herramientas relacionadas.

El osx-gcc-installer le permite instalar los compiladores esenciales desde paquetes binarios preconstruidos o lo ayuda a crear su propio instalador.

Esto solo instala las versiones también instaladas por Xcode. En otras palabras: obsoleto, y en realidad no es GCC sino LLVM-GCC.
Anticuado: Sí. El punto del paquete es que son las utilidades enviadas por Xcode, pero sin todos los otros componentes enormes necesarios para Xcode. No GNU GCC: Incorrecto. /usr/bin/gcces un enlace simbólico a llvm gcc, pero la referencia explícita /usr/bin/gcc-4.2o la configuración export CC="gcc-4.2"en su .bash_profile o archivo adecuado también mitiga el problema. (Consulte también esta pregunta de desbordamiento de pila ).
Tenga en cuenta que este proyecto ha sido reemplazado por las herramientas de línea de comandos oficiales de Apple para Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
el enlace kennethreitz.org/essays/xcode-gcc-and-homebrew ahora es malo.

Comando: brew update brew install gcc ubicación: /usr/local/Cellar/gcc/10.2.0_4: 1 Comando: brew update brew install ubicación de la aplicación: /usr/local/Cellar/gpp/2.27