La manera fácil
Si eres un desarrollador típico, puedes instalarlo de la manera más sencilla, siguiendo las instrucciones en http://gcc.gnu.org/wiki/InstallingGCC o el administrador de paquetes de tu sistema, como:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
El camino difícil
GCC dice que la respuesta aquí es "el camino difícil" porque construye todo pieza por pieza y no usa bibliotecas compartidas.
Infraestructura de GCC
Obtenga la infraestructura de GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Coloque las descargas en un directorio temporal (puede usar el directorio que desee).
/opt/downloads
Construya la infraestructura en un directorio temporal que sea diferente al directorio de descargas o sus subdirectorios:
/tmp/gcc
Configure la infraestructura usando bibliotecas estáticas como esta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Es posible que valga la pena examinar el indicador --disable-shared según sus necesidades. Utilizo --disable-shared porque solo estoy compilando código estático y quiero asegurarme de no compilar ningún código compartido. Mi necesidad es mover el GCC resultante alrededor de mis unidades fácilmente, así que quiero todo el código estático y no quiero ningún código compartido. Si prefiere el código compartido, omita la marca --disable-shared.
Versiones
Cuando ejecute cualquiera de los comandos en esta respuesta, asegúrese de actualizar los comandos para usar el número de versión actual de GCC que coincida con sus necesidades. Los comandos en esta respuesta son para GCC 4.6.2.
Tenga en cuenta que la documentación de GCC dice: "Si bien cualquier versión suficientemente nueva de las herramientas requeridas generalmente funciona, los requisitos de la biblioteca son generalmente más estrictos. Las versiones más nuevas pueden funcionar en algunos casos, pero es más seguro usar las versiones exactas documentadas".
GMP
GMP es la biblioteca aritmética de precisión múltiple de GNU.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR
MPFR es la biblioteca GNU de redondeo de punto flotante de precisión múltiple. Depende de GMP.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
MPC
MPC es la biblioteca C de precisión múltiple de GNU. Depende de GMP y MPFR.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
DUENDE
ELF son las siglas de Executable and Linkable Format. Esta biblioteca proporciona compatibilidad con endian y tamaño independiente de la arquitectura.
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC
GCC es la colección de compiladores GNU. Depende de GMP, MPFR, MPC y ELF.
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
Compile gcc en un directorio temporal en el mismo punto de montaje. (Construirlo dentro de / tmp desencadenaría problemas de host de compilación cruzada)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
El comando configure y sus banderas deben estar todos en una línea de comando (esta publicación los muestra en líneas separadas solo por el ancho de la página web).
Nota: Usamos la ruta completa para configurar y no establecemos variables de entorno de ruta de biblioteca. Elegimos deshabilitar el bootstrap y deshabilitar las bibliotecas compartidas porque no las queremos (los usuarios típicos pueden querer ambos), y usar subprocesos posix y marcadores que son predeterminados porque los queremos (los usuarios típicos pueden querer usar otros subprocesos u omitir banderas predeterminadas). YMMV y lea sobre las banderas aquí
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
Esta página es excelente para obtener información sobre la instalación de GCC, cómo construirlo, varios indicadores y más:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Actualizaciones
Las bibliotecas de ppl se pueden utilizar para optimizaciones de memoria: consulte bugseng.com/products/ppl/Download (gracias Paul en los comentarios)
Puede ejecutar ./contrib/download_prerequisites desde el directorio de origen de gcc. (Gracias a N7P en reddit)
--disable-shared
es incorrecto para la mayoría de las personas,--disable-bootstrap
puede acelerar la compilación, pero puede hacer que falle dependiendo de la versión de gcc existente,--enable-libgomp
habilitado de manera predeterminada de todos modos,--enable-lto
habilitado de manera predeterminada,--enable-thread-safe
no es una opción válida,--enable-threads=posix
habilitado de manera predeterminada en algunas plataformas, no válido en otras ,--enable-tls
habilitado por defecto, ... básicamente estas instrucciones son bastante pobresbrew install gcc
. Ver linuxbrew.shLa respuesta aceptada lo hace mucho más complicado de lo necesario y no es correcto para todas las versiones. Construir GCC con
--disable-shared
suele ser una muy mala idea. Consulte http://gcc.gnu.org/wiki/InstallingGCC para obtener un enfoque más sencillo.La totalidad de proceso debe ser más difícil que esto (la sustitución de 4.6.2 con la versión que desea construir):
(Pero lea el enlace de arriba de todos modos, contiene información útil).
Aparentemente, algunas personas en Ubuntu tienen toneladas de basura en su entorno que interfieren con el proceso de compilación de GCC, y deben eliminar eso primero:
fuente
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
antes de todo lo demás, como se sugiere aquí: stackoverflow.com/questions/12255058/…Trabajo en un clúster. Solo el nodo maestro está conectado a Internet. El software de los nodos está desactualizado y generalmente no se mantiene. No tengo acceso de root. Tengo dos opciones:
Elegí el segundo y construí gcc, g ++ y gfortran.
Construí todo en
y para
make
yo uséA continuación, gcc está construido con
Se puede obtener la última versión de gcc desde aquí: ftp://gcc.gnu.org/pub/gcc/releases
Las dependencias se encuentran aquí: ftp://gcc.gnu.org/pub/gcc/infrastructure
Dependencias
Obtengo dependencias con el siguiente script:
La siguiente función bash se utiliza a continuación:
Cada uno de los siguientes comandos se emitirá en el directorio de la lib recién descargada.
GMP
MPFR
MPC
ISL
CLOOG
gcc
fuente
LD_LIBRARY_PATH
para usar el GCC resultante.Usé lo que Jonathan mencionó anteriormente, excepto que tuve que descargar gmp y mpfr manualmente y crear un enlace suave (la distribución gcc 4.4.2 probablemente no tenga "requisitos previos de descarga")
Por cierto, usar "-with-gmp" y "with-mpfr" con "./configure" me dio "configure: error: no se puede calcular el sufijo de los archivos de objeto: no se puede compilar". Por lo tanto, descargué los srcs de gmp y mpfr y luego creé el enlace suave desde dentro de gcc src top level dir
fuente
Después de intentar instalar dependencias de GCC, incluidas GMP, MPFR y MPC. Me encontré con requisitos de instalación adicionales, errores y archivos faltantes; como el archivo de encabezado gmp.h requerido por MPFR para instalar. Hay una serie de problemas con los que se encontrará en el proceso. Sin embargo, existe una forma más sencilla de compilar e instalar GCC-X.0.0 o una versión posterior con un enlace automático .
OPCION UNO.
Para evitar la molestia de construir con make, make install y vincular las bibliotecas dinámicas, simplemente:
Descargue su versión GCC-X.0.0 (con la última versión de: https://gcc.gnu.org/ )
Extraiga los archivos gcc-X-000.tar.gz a una ubicación / somepath /.
Una vez que haya extraído el archivo .tar.gz, ejecute el script ./contrib/download_prerequisites que se encuentra en / somepath / o en el directorio de origen.
Este script descargará bibliotecas de soporte que incluyen: GMP, MPFR y MPC y creará enlaces simbólicos para usted, que CONSTRUIRÁ todas las dependencias de gcc automáticamente como parte del proceso de instalación de gcc.
No es necesario compilar y vincular bibliotecas de soporte que se descargaron en / somepath / emitiendo Make, Make Install o ejecutando el archivo ./configure o agregando enlaces como --with-gmp = / gmp_path / ... / ..... , --with-mpfr = / mpfr_path / ... / ... porque esto se hizo cuando ejecutó el script que creó enlaces simbólicos .
OPCIÓN DOS.
CONFIGURACIÓN:
Problema:
NÓTESE BIEN:
--enable-lenguajes como c ++ o c.
--disable-multilib ; deshabilite multilib según su sistema y sistema operativo, se le preguntará acerca de multilib para continuar.
Hacer tardará mucho en completarse. Sin embargo, puede emitir la opción -j #no_pro. Esto ejecutará Make simultáneamente en paralelo según la cantidad de procesadores en su PC o Mac.
Para obtener información detallada sobre cómo ejecutar este proceso, puede visitar: https://gcc.gnu.org/wiki/InstallingGCC .
fuente
Seguí la respuesta más aceptada por joelparkerhenderson. Esta es la mejor respuesta que pude encontrar para instalar en un sistema * NIX a través de Internet.
Para la posteridad, quiero agregar que si obtiene un error como "error de instalación: no se puede calcular el sufijo de los archivos de objeto: no se puede compilar"
luego actualice su LD_LIBRBARY_PATH con / tmp / gcc / lib (vea la respuesta completa de joelparkerhenderson para el contexto)
/ tmp / gcc / lib contiene todos los mpfr / mpc / gmp necesarios para que los archivos y el enlazador de tiempo de ejecución no puedan encontrarlos a menos que los agregue a LD_LIBRARY_PATH. Además, no olvide exportar LD_LIBRARY_PATH;). Más contexto aquí: https://gcc.gnu.org/wiki/FAQ#configure_suffix
fuente