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.
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
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 gccVersion
funcione, 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.
kevin chen
bmike
mmmmmm
which gcc
da?Peter Kämpf
mmmmmm
dan
echo $PATH
?dan
hash
no encuentragcc
,which
no lo hará mejor. Simplemente no se encuentra dentro del actualPATH
. Ver:which direction | sed 's,direction,gcc,'
:).kevin