Obtener + instalar gcc / g ++ 4.9 en Ubuntu? [duplicar]

78

¿Cómo instalo la última versión de gcc y g ++?

Estoy usando una variedad de características de C ++ 11 y C ++ 1y; por eso necesito esto.

    
pregunta A T 02.03.2014 - 04:05

7 respuestas

107

Puede instalar la versión de GCC de versiones anteriores de Ubuntu Toolchain PPA: enlace

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

Probado en Ubuntu 14.04.

    
respondido por el Vladimir Rutsky 28.04.2014 - 10:14
42

Introducción

enseñar a un hombre a pescar, etc., etc.

Cómo construir el paquete de origen y servirlo desde un repositorio local de forma apta para el usuario. Esto funcionará en cualquier distribución siempre que se puedan satisfacer las dependencias / Este método no requiere que instales build-deps para cada paquete y contaminen tu máquina con paquetes extraños, esto te permitirá mantenerte al día con los paquetes a medida que se actualicen en debian experimental . Solo se necesitan unos minutos para hacer esto una vez, y luego se puede reutilizar para reconstruir cualquier paquete que necesite sin depender de otras personas para empaquetar el paquete ppa o descargar un montón de .debs diferentes

El beneficio de construir vs. extraer .debs sin procesar de debian es que esto compilará paquetes contra los paquetes en su distribución que pueden diferir en la versión / revisión de lo que se usa como dependencias de compilación para la distribución de Debian. Este es más o menos el proceso para paquetes de backporting. También puede usar cualquier distribución de ubuntu para crear paquetes dirigidos a cualquier otra distribución (el objetivo en este caso significa compilar contra los paquetes de repositorio estándar) sin problemas.

Basic-How-to-Build-a-Deb

(no para la carga de ppa, esto tiene requisitos burocráticos del launchpad

Probablemente requerido: packaging-dev (pulls build-essential pubilder ubuntu-dev-tools entre otros)

  1. Configure pbuilder (esto le permite crear un paquete en un chroot sin contaminar su sistema con paquetes de dependencia de compilación)

    • sudo pbuilder create ,
    • si desea compilar para una distribución específica, (pbuilder usa la versión del sistema de compilación en un chroot) puede usar pbuilder-dist [precise/oneric/trusy/etc...] create
  2. Obtener la fuente debian

    • pull-debian-source gcc-4.9 [4.9.0-6] revisión específica de debian es opcional, pero puede ser útil si desea extraer revisiones experimentales / inestables / de prueba / estables
    • también puede extraer de determinadas distribuciones de ubuntu agregándolas a sources.list como deb-src y utilizando sudo apt-get src
  3. Generar paquete

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • En los archivos descargados hay un archivo .dsc , para el gcc más reciente es gcc-4.9_4.9.0-6.dsc el cual es un archivo de descriptor de paquete. .orig.tar.[gz/xz] es el tarball de origen.
  4. Crear un repositorio Apt local

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (suponiendo que estés en el directorio de repos) apt-ftp archive packages . > Packages
    • (una de las muchas maneras de hacerlo) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Tenga en cuenta que también puede hacer este paso con .debs descargado desde cualquier lugar (omita los pasos 1-3)
  5. Instalar

    • apt-get update; apt-get install gcc-4.9 g++-4.9

Trucos extra

Dependencias fáciles de backporting

Uso de paquetes autocompilados para satisfacer las dependencias al crear paquetes. (Lo tengo configurado con las carpetas ~/pbuilder ~/pbuilder/precise_local (repositorio de paquete local para precisión) y ~/pbuilder/precise_hooks (para scripts de gancho))

Agregue lo siguiente a su ~/.pbuilderrc

OTHERMIRROR="deb [trusted=yes] file:///home/user/pbuilder/precise_local ./"

BINDMOUNTS="/home/user/pbuilder/precise_local" 

HOOKDIR="/home/user/pbuilder/precise_hooks"

EXTRAPACKAGES="apt-utils"

en precise_hooks crea un archivo D05local (en la moda típica de Unix / Linux, prefijo D dice cuando el guion está enganchado 05 es auto-impuesto ordenamiento de nombres y local es solo el nombre, si solo tienes un gancho, no importa a qué se llama, siempre que D sea el prefijo

el script es de una sola línea

(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)

Ahora cualquier paquete colocado en precise_local satisfará build-depends. Esto es sumamente útil para construir un árbol de dependencias de forma local cuando retrocede portando paquetes que tienen dependencias que también necesitan backporting

La solución de VM

Para hacer esto de una manera aún más limpia, use una imagen de VM o un contenedor LXC para encerrar este desastre.

Aplicación de parches personalizados

puede aplicar parches personalizados en la mayoría de los paquetes Debian usando quilt , los parches de parches pueden usar diffs de la mayoría de los VCS (consulte: usando quilt )

Hay un paso adicional, debe reconstruir el .dsc y .debian.tar.gz . La forma más limpia que sé es bzr-builddeb tiene la tasa de éxito más alta en mi humilde opinión (en comparación con git-build-package y otros scripts de ayuda) y es mucho más limpia que llamar debuild directamente ( bzr = bazaar canonical's VCS)

  1. sudo apt-get install bzr-builddeb
  2. (suponiendo que se extrae .orig.tar.gz y se extrae .debian.tar.gz y colóquelo en él)
    • bzr init
    • bzr add
    • bzr commit
  3. (OPCIONAL)
    • modificar debian/changelog
    • agregue el parche a debian/patches/ y modifique debian/patches/series (el edredón también tiene utilidad para agregar parches o para que lo modifique sobre la marcha, consulte la documentación)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc Esto reconstruye el archivo fuente y lo deja sin firmar (se requiere la firma gpg para la carga de PPA / distro, pero no para los repos locales privados)
  5. cd ../build-area/ Continúa desde el Paso 3 anterior.

Los pasos del 1 al 4 aquí son más o menos lo que necesita cargar en un PPA (no aceptan archivos binarios), pero necesita algunos pasos para satisfacer la burocracia del launchpad (esto answer proporciona una explicación, esta tiene algunos enlaces)

    
respondido por el crasic 12.06.2014 - 18:03
26

instalar

sudo su -
apt-get install build-essential
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-4.9 g++-4.9 cpp-4.9

después de eso, si comprueba la versión de gcc, encontrará la versión anterior

gcc --version

para que podamos arreglarlo con un simple símbolo simbólico

cd /usr/bin
rm gcc g++ cpp
ln -s gcc-4.9 gcc
ln -s g++-4.9 g++
ln -s cpp-4.9 cpp

o

puedes actualizar usando update-alternatives

// De hecho, probé lo simbólico & amp; Sé que esto funcionará pero puedes usar lo simbólico para obtenerlo sin problemas // por favor corrígeme si estoy equivocado

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/gcc gcc /usr/bin/gcc-4.9
update-alternatives --config gcc
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 40 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.9
update-alternatives --config cpp
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
update-alternatives --config g++

o

puedes compilar con
/usr/bin/gcc4.9 filename.c

gcc-4.9 es como el gcc-4.8 "ubuntu 14.04 gcc" no es una gran deferencia

    
respondido por el hwez 05.08.2014 - 10:27
8

Debian ofrece un paquete: enlace - Para evitar problemas con la compatibilidad Ubuntu / Debian; no lo agregue a su sources.list.

En lugar de eso, simplemente descarga todos estos:

binutils_2.25-5_amd64.deb
cpp_4.9.2-2_amd64.deb
g++_4.9.2-2_amd64.deb
gcc_4.9.2-2_amd64.deb
gcc-4.9-base_4.9.2-10_amd64.deb
libasan1_4.9.2-10_amd64.deb
libatomic1_4.9.2-10_amd64.deb
libcilkrts5_4.9.2-10_amd64.deb
libgcc1_4.9.2-10_amd64.deb
libgcc-4.9-dev_4.9.2-10_amd64.deb
libgomp1_4.9.2-10_amd64.deb
libitm1_4.9.2-10_amd64.deb
liblsan0_4.9.2-10_amd64.deb 
libmpfr4_3.1.2-2_amd64.deb
libquadmath0_4.9.2-10_amd64.deb
libstdc++-4.9-dev_4.9.2-10_amd64.deb
libstdc++6
libtsan0_4.9.2-10_amd64.deb
libubsan0_4.9.2-10_amd64.deb

Desde los servidores de Debian, por ejemplo:

enlace

Luego instálelos, p. ej .: $ for package in *.deb; do sudo dpkg --install "$package"; done

[Es más fácil ejecutar ese bucle bash varias veces hasta que se cubran todas las dependencias que recordar el orden en que las descargaste!]

    
respondido por el A T 02.03.2014 - 04:05
2

Actualmente (20141102) agregando el PPA e invocando el comando anterior apt-get install gcc-4.9 g++-4.9 cpp-4.9 imprimirá una serie de paquetes sugeridos. Instálelos todos excepto libvtv0-dbg (que tiene un conflicto de dependencia):

apt-get install gcc-4.9 g++-4.9 cpp-4.9 gcc-4.9-locales g++-4.9-multilib libstdc++6-4.9-dbg gcc-4.9-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg lib32stdc++6-4.9-dbg libx32stdc++6-4.9-dbg

(omita los paquetes -dbg si no le interesan), y luego haga un apt-get dist-upgrade --auto-remove . Ese último paso básicamente reemplazará su gcc-4.8 con gcc-4.9 (pero no desinstalará la versión anterior), y obtendrá compiladores fortran actualizados al mismo tiempo.

    
respondido por el RJVB 02.11.2014 - 20:09
2

Tuve que forzar la versión del paquete gcc-4.9-base para que pasara el mensaje de error que publicaste. Luego, la instalación funcionó

sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04

Ahora puedes hacer lo habitual

sudo apt-get install gcc-4.9
    
respondido por el mark.kedzierski 13.04.2015 - 18:51
2

Instalar GCC GNU 4.9

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install gcc-4.9

Elimina la versión de gcc anterior de la lista de aplicaciones predeterminadas (si ya existe)

sudo update-alternatives --remove-all gcc

Haga que GCC 4.9 sea el compilador predeterminado en el sistema

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --config gcc

La última actualización de GCC 4.9.1 es una versión de corrección de errores de la rama 4.9 de GCC que contiene correcciones importantes para regresiones y errores graves en GCC 4.9.0 con más de 88 errores corregidos desde la versión anterior. Además de eso, la versión GCC 4.9.1 es compatible con OpenMP 4.0 también en Fortran, en lugar de solo en C y C ++

Nota: revisado en ubuntu 14.04 LTS

    
respondido por el Swap L 25.08.2015 - 07:56

Lea otras preguntas en las etiquetas