Instalar gcc en mac a través de Terminal

He instalado Xcode y las herramientas de línea de comandos del sitio web Mac Developers, que he leído varias veces como requisito previo. También instalé el programa MacPorts. En terminales:

sudo port install gcc48
sudo port select -set gcc mp-gcc48

Todo lo anterior transcurrió sin problemas hasta que escribo:

hash gcc

Cuando presiono enter, aparece el siguiente mensaje de error:

-bash: hash: gcc: no encontrado

Estoy perdido y no sé cómo proceder para instalar correctamente gcc en mi Mac (que ejecuta Mac OS X 10.9.1).

Muy agradecido a cualquier sugerencia o alternativa para instalar el gcc.

¿Alguna razón por la que necesites gcc específicamente? clang usa la misma sintaxis, compila más rápido y genera código más rápido. Los principales errores se han eliminado en los últimos años.
Una edición ayudaría a esto. Si tiene un paquete que necesita compilar, anótelo. Si solo quiere saber cómo compilar gcc por diversión, también está bien, pero la respuesta es diferente.
¿Qué which gccda?
¿Revisaste tu variable de ruta en tu ~/.profile? Debe apuntar al directorio en el que se encuentra gcc.
¿Qué muestra ;s -l /opt/local/bin/gcc*?
→ usuario[3239031]: inserte en su pregunta original el resultado de echo $PATH?
→ Mark: si hashno encuentra gcc, whichno lo hará mejor. Simplemente no se encuentra dentro del actual PATH. Ver: which direction | sed 's,direction,gcc,':).
@KevinChen "genera un código más rápido"? Necesito referencia para esto. Todavía creo que gcc generará un código más rápido.

Respuestas (3)

Es mejor que instales gcc desde homebrew que desde Macports.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew update
brew search gcc

Hay alrededor de 6 versiones de gcc disponibles en este administrador de paquetes. Consulte http://brew.sh para obtener más detalles sobre las herramientas caseras. Además, este hilo tiene más detalles sobre gcc y homebrew: ¿ Cómo instalo GCC a través de Homebrew? Por último, el error de gcc en su shell es similar a este hilo: instalé Xcode pero todavía no tengo gcc en mi terminal

¿Por qué sería esto mejor que macports?

Su podría ser dos problemas. Un problema es tu camino. Debe tener /opt/local/bin delante de /usr/bin actualmente tiene /opt/local/bin detrás de /usr/bin. Debido a esto, g ++ probablemente todavía esté vinculado a clang.

El otro problema es que está utilizando mal el comando de selección de puerto. El comando de selección de puerto crea automáticamente un enlace de bandera g ++ a su compilador especificado. En este caso, el compilador especificado debe ser mp-4.8 y debe ser --set en lugar de -set. Las instrucciones están en esta página web http://dropbit.com/?p=84 .

No creo que su comando de selección de puerto haya hecho lo que esperaba. El manual establece que el comando de selección selecciona entre múltiples versiones de un puerto versionado , que creo que no es su caso aquí:

pejvan$ port help select
Usage: select --list --set --show --summary <arguments>

Select between multiple versions of a versioned port

This allows you to choose which version, among several installed versions
of a port, is to be considered primary.  What this means is which version
becomes the one most would consider the default, e.g. the one run without
specifying any version.

Después de ejecutar con éxito el comando de instalación para gcc (aquí la versión 4.9):

sudo port install gcc49

Puede verificar que tiene instalados los binarios de gcc:

pejvan$ ls -l /opt/local/bin/gcc*
-rwxr-xr-x  2 root  admin    42912  3 Jun 03:44 /opt/local/bin/gcc-ar-mp-4.9
-rwxr-xr-x  3 root  admin  1082788  3 Jun 03:44 /opt/local/bin/gcc-mp-4.9
-rwxr-xr-x  2 root  admin    42992  3 Jun 03:44 /opt/local/bin/gcc-nm-mp-4.9
-rwxr-xr-x  2 root  admin    43000  3 Jun 03:44 /opt/local/bin/gcc-ranlib-mp-4.9

Luego puede ejecutar gcc con la ruta completa a los archivos binarios:

pejvan$ gcc-mp-4.9 --version
gcc-mp-4.9 (MacPorts gcc49 4.9-20140416_2) 4.9.0 20140416 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Si desea reemplazar (temporal o permanentemente) el compilador clang por gcc, puede hacerlo configurando CC env var de la siguiente manera, por ejemplo:

export CC=/opt/local/bin/gcc-mp-4.9 # set GCC as default C compiler

Como nota al margen, tenga en cuenta que para que port select gccVersionfuncione, deberá instalar gcc_select:

pejvan$ port info gcc_select
gcc_select @0.1_8 (sysutils)

Description:          gcc_select installs files that allow 'port select' to switch the default version of gcc. It symlinks the standard compiler executables in
                      the MacPorts prefix to the selected version.

No he mirado los detalles del paquete, por lo que no estoy seguro de si funcionaría entre clang y gcc instalado en el puerto o solo con varias versiones diferentes de paquetes gcc instalados en el puerto.

Solo entre paquetes gcc y selección de puerto debería haber funcionado
Eso es lo que dije en la primera oración, amigo.
(PERO necesita instalar el paquete gcc_select, que no parece ser el caso aquí).