linux - ejecutar - instalar gcc en ubuntu
¿Cómo cambiar el compilador predeterminado de GCC en Ubuntu? (8)
Ahora, hay gcc-4.9 disponible para Ubuntu / precisa.
Cree un grupo de alternativas de compilación donde el compilador de distribución tenga una prioridad más alta:
root$ VER=4.6 ; PRIO=60
root$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
root$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-$VER $PRIO
root$ VER=4.9 ; PRIO=40
root$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
root$ update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-$VER $PRIO
NOTA: la versión de g ++ se cambia automáticamente con un modificador de versión de gcc. cpp-bin debe hacerse por separado, ya que existe una alternativa principal "cpp".
Enumerar alternativas de compilador disponibles:
root$ update-alternatives --list gcc
root$ update-alternatives --list cpp-bin
Para seleccionar manualmente la versión 4.9 de gcc, g ++ y cpp, haz:
root$ update-alternatives --config gcc
root$ update-alternatives --config cpp-bin
Verificar versiones del compilador:
root$ for i in gcc g++ cpp ; do $i --version ; done
Restaurar la configuración del compilador de distro (aquí: volver a v4.6):
root$ update-alternatives --auto gcc
root$ update-alternatives --auto cpp-bin
He instalado gcc-3.3 / g ++ - 3.3 en ubuntu 11.04 que ya tiene gcc / g ++ - 4.4. Entonces, en mi sistema, tanto gcc-3.3 como 4.4 están disponibles. Puedo llamar a ambos compiladores como quiera. Si solo llamo al comando gcc
llamará a gcc-4.4. Para llamar a gcc-3.3, tengo que usar el comando gcc-3.3
.
¿Cómo puedo cambiar el compilador predeterminado como gcc-3.3? Cuando ejecuto el comando gcc
debería llamar a gcc-3.3 y no a gcc-4.4.
Además, ¿cómo puedo cambiar la variable CXX en un archivo make a gcc-3.3? Deseo cambiar un lugar global común en el sistema en lugar de cambiar todos los archivos make.
Aquí hay un ejemplo completo de la respuesta de jHackTheRipper para el grupo TL; DR. :-) En este caso, quería ejecutar g ++ - 4.5 en un sistema Ubuntu que por defecto es 4.6. Como root
:
apt-get install g++-4.5
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.5 50
update-alternatives --set g++ /usr/bin/g++-4.5
update-alternatives --set gcc /usr/bin/gcc-4.5
update-alternatives --set cpp-bin /usr/bin/cpp-4.5
Aquí, 4.6 sigue siendo el predeterminado (también conocido como "modo automático"), pero explícitamente cambio a 4.5 temporalmente (modo manual). Para volver a 4.6:
update-alternatives --auto g++
update-alternatives --auto gcc
update-alternatives --auto cpp-bin
(Tenga en cuenta el uso de cpp-bin
lugar de simplemente cpp
. Ubuntu ya tiene una alternativa de cpp
con un enlace maestro de /lib/cpp
. Renombrar ese enlace eliminaría el enlace /lib/cpp
, lo que podría romper los scripts).
Como @Tommy sugirió, debería usar update-alternatives
.
Asigna valores a cada software de una familia, de modo que define el orden en que se llamarán las aplicaciones.
Se usa para mantener diferentes versiones del mismo software en un sistema. En su caso, podrá usar varias declinaciones de gcc
, y una será favorecida.
Para descubrir las prioridades actuales de gcc, escriba el comando señalado por el comentario de @ tripleee:
update-alternatives --query gcc
Ahora, tenga en cuenta la prioridad atribuida a gcc-4.4
porque tendrá que dar una mayor a gcc-3.3
.
Para establecer sus alternativas, debe tener algo como esto (suponiendo que su instalación de gcc
se encuentra en /usr/bin/gcc-3.3
, y la prioridad de gcc-4.4
es menor que 50) :
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 50
--editar--
Finalmente, también puede usar la interfaz interactiva de update-alternatives
de update-alternatives
para cambiar fácilmente de una versión a otra. Escriba update-alternatives --config gcc
para que se le pida que elija la versión de gcc que desea usar entre las instaladas.
--edit 2 -
Ahora, para arreglar la variable de entorno CXX en todo el sistema, debe poner la línea indicada por @ DipSwitch en su archivo .bashrc
(esto aplicará el cambio solo para su usuario, que en mi opinión es más seguro):
echo ''export CXX=/usr/bin/gcc-3.3'' >> ~/.bashrc
En caso de que desee una forma más rápida (pero todavía muy limpia) de lograrlo para un propósito personal (por ejemplo, si desea construir un proyecto específico que tenga algunos requisitos estrictos con respecto a la versión del compilador), solo siga los siguientes pasos:
- escriba
echo $PATH
y busque un directorio personal que tenga una prioridad muy alta (en mi caso, tengo~/.local/bin
); - agregue los enlaces simbólicos en este directorio:
Por ejemplo:
ln -s /usr/bin/gcc-WHATEVER ~/.local/bin/gcc
ln -s /usr/bin/g++-WHATEVER ~/.local/bin/g++
Por supuesto, esto funcionará para un solo usuario (no es una solución de todo el sistema), pero, por otro lado, no me gusta cambiar demasiadas cosas en mi instalación.
Encontré este problema al intentar instalar un nuevo compilador clang. Resulta que tanto los mantenedores de Debian como los de LLVM acuerdan que el sistema de alternativas debe usarse para alternativas, NO para el control de versiones .
La solución que proponen es algo como esto:
PATH=/usr/lib/llvm-3.7/bin:$PATH
donde /usr/lib/llvm-3.7/bin es un directorio que fue creado por el paquete llvm-3.7 y que contiene todas las herramientas con sus nombres no sufijos. Con eso, llvm-config (versión 3.7) aparece con su nombre simple en tu RUTA. No hay necesidad de perder el tiempo con enlaces simbólicos, ni de llamar al llvm-config-3.7 que se instaló en / usr / bin.
Además, busque un paquete llamado llvm-defaults (o gcc-defaults), que podría ofrecer otra forma de hacerlo (no lo usé).
Entre 4.8 y 6 con todos los --slaves
:
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 /
10 /
--slave /usr/bin/cc cc /usr/bin/gcc-4.8 /
--slave /usr/bin/c++ c++ /usr/bin/g++-4.8 /
--slave /usr/bin/g++ g++ /usr/bin/g++-4.8 /
--slave /usr/bin/gcov gcov /usr/bin/gcov-4.8 /
--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-4.8 /
--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-4.8 /
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.8 /
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.8 /
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.8
y
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 /
15 /
--slave /usr/bin/cc cc /usr/bin/gcc-6 /
--slave /usr/bin/c++ c++ /usr/bin/g++-6 /
--slave /usr/bin/g++ g++ /usr/bin/g++-6 /
--slave /usr/bin/gcov gcov /usr/bin/gcov-6 /
--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-6 /
--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-6 /
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-6 /
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-6 /
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-6
Cambie entre ellos con update-alternatives --config gcc
.
Usé solo las líneas a continuación y funcionó. Solo quería compilar VirtualBox
y VMWare WorkStation
usando kernel 4.8.10
en Ubuntu 14.04
. Inicialmente, la mayoría de las cosas no funcionaban, por ejemplo, gráficos y redes. Tuve suerte de que la VMWare workstation
solicitara gcc 6.2.0
. No pude iniciar mis Genymotion Android emulators
Genymotion porque virtualbox no funcionaba. Publicará los resultados más tarde si es necesario.
VER=4.6 ; PRIO=60
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
VER=6 ; PRIO=50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
VER=4.8 ; PRIO=40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$VER $PRIO --slave /usr/bin/g++ g++ /usr/bin/g++-$VER
Esta es la gran descripción y la instrucción paso a paso sobre cómo crear y gestionar alternativas maestras y esclavas (gcc y g ++).
En breve es:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --config gcc