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 llamo al comando, gcc
se 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 a 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.
CXX=gcc-3.3
oexport CXX=gcc-3.3
y luego,make
sin embargo, cuando lo cambió globalmenteupdate-alternatives
, ya usará gcc-3.3 y esto no es necesario.Respuestas:
Como sugirió @Tommy, debes usar
update-alternatives
.Asigna valores a cada software de una familia, de modo que define el orden en el que se llamarán las aplicaciones.
Se utiliza para mantener diferentes versiones del mismo software en un sistema. En su caso, podrá utilizar varias declinaciones de
gcc
, y una será favorecida.Para averiguar las prioridades actuales de gcc, escriba el comando señalado por el comentario de @ tripleee:
Ahora, tenga en cuenta la prioridad atribuida a
gcc-4.4
porque tendrá que dar una mayor agcc-3.3
.Para establecer sus alternativas, debe tener algo como esto (asumiendo que su
gcc
instalación está ubicada en/usr/bin/gcc-3.3
, ygcc-4.4
la prioridad es menor que 50) :--editar--
Por último, también puede utilizar la interfaz interactiva de
update-alternatives
para cambiar fácilmente entre versiones. Escribaupdate-alternatives --config gcc
para que se le pida que elija la versión de gcc que desea usar entre las instaladas.--editar 2 -
Ahora, para corregir la variable de entorno CXX en todo el sistema, debe colocar la línea indicada por @ DipSwitch en su
.bashrc
archivo (esto aplicará el cambio solo para su usuario, que es más seguro en mi opinión):fuente
cc
:root@host:/root# update-alternatives --get-selections | grep '/usr/bin/gcc' cc auto /usr/bin/gcc
update-alternatives --query gcc
, que podría no funcionar, por ejemplo, en un script de aprovisionamiento automático. Además, ¿cómo se puede hacer que esto sea independiente de la plataforma?Aquí hay un ejemplo completo de la respuesta de jHackTheRipper para la multitud de TL; DR. :-) En este caso, quería ejecutar g ++ - 4.5 en un sistema Ubuntu que por defecto es 4.6. Como
root
:Aquí, 4.6 sigue siendo el predeterminado (también conocido como "modo automático"), pero cambio explícitamente a 4.5 temporalmente (modo manual). Para volver a 4.6:
(Tenga en cuenta el uso de en
cpp-bin
lugar de solocpp
. Ubuntu ya tiene unacpp
alternativa con un enlace maestro de/lib/cpp
. Cambiar el nombre de ese enlace eliminaría el/lib/cpp
enlace, lo que podría romper los scripts).fuente
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
g++-6
paquete?__builtin
cosas no definidas .Esta es la gran descripción e instrucción paso a paso sobre cómo crear y administrar alternativas de maestro y esclavo (gcc y g ++).
En breve es:
fuente
Entre 4.8 y 6 con todo
--slaves
:y
Cambie entre ellos con
update-alternatives --config gcc
.fuente
cc
yc++
, lo que causa un error: la alternativa cc no puede ser esclava de gcc: es una alternativa maestraAhora, hay gcc-4.9 disponible para Ubuntu / exact.
Cree un grupo de alternativas de compilador donde el compilador de distribución tenga una prioridad más alta:
NOTA: la versión de g ++ se cambia automáticamente con un cambio de versión de gcc. cpp-bin debe realizarse por separado ya que existe una alternativa maestra "cpp".
Enumere las alternativas de compilador disponibles:
Para seleccionar manualmente la versión 4.9 de gcc, g ++ y cpp, haga:
Verifique las versiones del compilador:
Restaurar la configuración del compilador de distribución (aquí: de vuelta a v4.6):
fuente
Encontré este problema al intentar instalar un nuevo compilador de clang. Resulta que tanto los mantenedores de Debian como los de LLVM están de acuerdo en que el sistema de alternativas debe usarse para alternativas, NO para 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 sin sufijo. Con eso, llvm-config (versión 3.7) aparece con su nombre simple en su RUTA. No hay necesidad de perder el tiempo con los 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 hacer esto (no lo usé).
fuente
En caso de que desee una forma más rápida (pero aún 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), simplemente siga los siguientes pasos:
echo $PATH
y busque un directorio personal que tenga una prioridad muy alta (en mi caso, lo tengo~/.local/bin
);Por ejemplo:
Por supuesto, esto funcionará para un solo usuario (no es una solución para todo el sistema), pero por otro lado no me gusta cambiar demasiadas cosas en mi instalación.
fuente
Usé solo las líneas de abajo y funcionó. Sólo quería recopilar
VirtualBox
yVMWare WorkStation
utilizarkernel 4.8.10
elUbuntu 14.04
. Inicialmente, la mayoría de las cosas no funcionaban, por ejemplo, los gráficos y las redes. Tuve suerte de que loVMWare workstation
solicitaragcc 6.2.0
. No pude iniciar miGenymotion Android emulators
porque virtualbox estaba caído. Publicará los resultados más tarde si es necesario.fuente