¿Cómo uso el último GCC en Ubuntu?

132

Quiero compilar mi programa con la última versión de gcc.

Ubuntu 14.04 viene con gcc 4.8.2, 4.9.0 sin embargo hay disponibles, por otra parte, veo que está disponible como un paquete: gcc-4.9. Traté de instalarlo

sudo apt-get install gcc-4.9

pero dice

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Parece que ya está instalado, ¿pero no como el predeterminado? ¿Cómo lo utilizo para construir mi programa?

Nickolai Leschov
fuente
Si desea instalar gcc-4.8, debe usar sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Todos están en Ubuntu repo principal .
1
@Dumindu Pero, ¿cómo lo uso gcc-4.9específicamente?
Nickolai Leschov
Desinstale otros e instale 4.9.
2
@Dumindu Espera, ¿me acabas de decir que haga lo que acabo de hacer? No está trabajando.
Nickolai Leschov
cambie a usuario root: sudo su -vaya a y /usr/binluego ejecute ls -l gcc*y publique su salida. entonces publicaré tu respuesta.
αғsнιη

Respuestas:

196

La mejor manera de instalar correctamente gcc-4.9 y configurarlo como su versión predeterminada de gcc:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

El --slave, con g++, hará g++que se cambie junto con gcc, a la misma versión. Pero, en este punto, gcc-4.9 será su única versión configurada update-alternatives, así que agregue 4.8 update-alternatives, por lo que en realidad hay una alternativa, usando:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

Luego puede verificar cuál está configurado y cambiar de un lado a otro utilizando:

sudo update-alternatives --config gcc

NOTA: Puede omitir la instalación del repositorio de PPA y simplemente usarlo, /usr/bin/gcc-4.9-basepero prefiero usar las nuevas cadenas de herramientas actualizadas.


Para GCC 5.X o 6, los paquetes (y, en consecuencia, los comandos) simplemente se llaman gcc-5, gcc-6etc. Esto se debe al cambio en el esquema de versión de GCC , donde 5.1 es la primera versión de GCC 5 y futuras versiones 5.X son para corregir errores .

SudoSURoot
fuente
Gracias por editar @muru ... como dije a continuación, estuve despierto durante 3 días muy cansado y la actualización de alternativas requiere sudo y creo que olvidé el (-) antes de esclavo. :) Así que gracias.
SudoSURoot
Pruebasudo apt-get -f install
SudoSURoot
44
Esto funciona perfectamente Además, sustitúyalo 5para 4.9que GCC 5 funcione en Ubuntu. (Mi equipo de desarrollo ahora ejecuta 4.9 y 5 uno junto al otro siguiendo su método). ¡Gracias y +1!
CodeMouse92
2
@hwat Debería funcionar por gcc-6ahora.
edwinksl
1
Esto me ha ayudado varias veces, pero siempre lo olvido: ¡asegúrese de aplicar la misma solución a otras utilidades en la colección del compilador GNU que puede usar! GCOV, por ejemplo, se quejará de una discrepancia de versión si no lo hace, posiblemente produciendo datos incorrectos.
Toby
23

Use el PPA de Buildchain Test Builds :

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

No creo que GCC 4.9 esté totalmente disponible para Ubuntu 14.04 todavía. El paquete base ( gcc-4.9-base ) y el compilador GCC Go 4.9 ( gccgo-4.9 ) están disponibles, pero las otras interfaces no lo están. No se porque.

muru
fuente
1
@SudoSURoot puede o no establecerse como predeterminado, esa no es mi preocupación (hay otras publicaciones que se ocupan de eso). Sin embargo, que las interfaces C y C ++ de GCC 4.9 se pueden instalar en 14.04 puramente desde los repositorios oficiales es evidentemente falso, ya que el gcc-4.9-basepaquete no contiene y no contendrá una interfaz binaria.
muru
Tienes razón sobre el paquete base. Como verá en mi respuesta, usé el PPA. Publiqué el comentario primero, luego respondí la pregunta como se indicó, de la pregunta ... Porque simplemente agregar el PPA e instalar 4.9 no lo habilita, lo que es necesario para "usar gcc 4.9". Debería haber eliminado el comentario después de responder la pregunta. Me disculpo. Mi respuesta es en lo que debería centrarse. Llegué a conclusiones ... y comenté muy rápido. En realidad, soy bastante nuevo con el uso de 14.04 desde que obtuve un servidor dedicado. Voy a asegurarme de no rechazar el voto y lo arreglaré si lo hiciera.
SudoSURoot
@SudoSURoot bien. Aun así, a menos que OP tenga un problema con las llamadas gcc-4.9o en g++-4.9lugar de gcco g++, me limitaré a no actualizar las alternativas.
muru
Entiendo perfectamente. Sin embargo, construyo sistemas Android, que usan una gran cantidad de $ (que gcc) y $ (que g ++), etc. Así que siempre tengo que tener los valores predeterminados establecidos en la versión que quiero usar. Parte del código de mi núcleo no se compilaría con el host gcc-4.8, así que tuve que actualizar. Solo repetí lo que funcionó para mí. Sin embargo, gracias por recordármelo ... Como dije en mi edición, desde el último comentario, podría haber votado en contra, prematuramente, de ser así lo arreglaré. Llevaba 2 o 3 días trabajando en la fuente de mi núcleo cuando publiqué estos. Cada uno tiene sus maneras ... acabo de encontrar la más completa mi respuesta a los que menos preguntas g
SudoSURoot
El último paquete es gcc-7 ATM
Elder Geek
5

Ubuntu 16.04 y posterior

Ya puede instalar gcc 7.0 en Ubuntu 18.04 desde los repositorios predeterminados. Para instalar gcc-7 en Ubuntu 17.10, 18.04 y 18.10, abra el terminal y escriba:

sudo apt install gcc-7 

Para instalar gcc-8 en Ubuntu 18.04 y luego abrir la terminal y escribir:

sudo apt install gcc-8

Para instalar gcc-9 en Ubuntu 19.04 y luego abrir la terminal y escribir:

sudo apt install gcc-9

Puede instalar gcc-7 en Ubuntu 16.04 desde ppa: jonathonf / gcc-7.1.

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

Puede instalar gcc-8 en Ubuntu 16.04 desde ppa: jonathonf / gcc-8.0.

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 
karel
fuente
3

Para llamar a gcc 4.9 específicamente, úselo gcc-4.9en el símbolo del sistema.

Se puede llamar individualmente a todas las versiones de gcc que haya instalado agregando un guión y el número de versión al final de gcc. En su caso, gcc-4.8y gcc-4.9debe estar disponible. En un terminal, escriba gcc-(tenga en cuenta el guión) y la pestaña push dos veces para ver si hay otras versiones instaladas.

Tenga en cuenta que el valor predeterminado de gcc todavía es 4.8 (Use gcc -vpara verificar esto). Desafortunadamente, cambiar el valor predeterminado no es trivial si instaló gcc-4.9 desde el repositorio predeterminado, ya que no agregó una entrada de alternativas de actualización. Si está interesado en cómo cambiar el valor predeterminado, vea las respuestas a esta pregunta .

Tejedor de holocrón
fuente
¿Cómo hago un proyecto confiando en un archivo MAKE y posiblemente en otra infraestructura de compilación con otra en gcc-4.9lugar de gcc?
Nickolai Leschov
1
La mejor manera de asegurarse de que gcc-4.9 se use en los sistemas de compilación es cambiar el gcc predeterminado. Siga el enlace que proporcioné en mi respuesta para saber cómo hacer esto. Alternativamente, podría crear un enlace simbólico, aunque lo recomiendo en contra de esto, excepto como último recurso, ya que el administrador de paquetes podría quejarse al actualizar gcc. Si insiste: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Para volver al valor predeterminado de gcc-4.8, simplemente reemplace gcc-4.9 con gcc-4.8. Es posible que tenga que hacer esto con g ++ y otros compiladores de GNU también.
holocronweaver
GCC 4.9 no está disponible en Ubuntu 14.04 (a excepción del compilador GCC Go ), por lo que si bien esta respuesta probablemente funcionará en Ubuntu 14.10, ahora no ayuda. :-)
Søren Løvborg
De hecho, está disponible en Ubuntu 14.04, aunque puede haber sido un error: packages.ubuntu.com/trusty/gcc-4.9-base . Lo he estado usando desde abril.
holocronweaver
0

OK, hagamos esto:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

Todas las preguntas:

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente