Tabla de contenido
- 1. Descargue el paquete de compresión fuente gcc 9.1.0
- 2. Descomprima el paquete
- 3. Comprobar y configurar el entorno para la compilación del código fuente
- 5. Compilar el código fuente de gcc
- 6. Instalar gcc
- 7. Use alternativas de actualización para administrar múltiples versiones locales de gcc y g ++
1. Descargue el paquete de compresión fuente gcc 9.1.0
Dirección espejo nacional: https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.1.0/
2. Descomprima el paquete
Coloque el paquete comprimido en un directorio (~/myproject/gcc en este ejemplo) y luego descomprímalo
sun@sun-pc:~/myproject/gcc$ tar -zxvf gcc-9.1.0.tar.gz
...
sun@sun-pc:~/myproject/gcc$ ls
gcc-9.1.0 gcc-9.1.0.tar.gz
3. Comprobar y configurar el entorno para la compilación del código fuente
Ejecutar la configuración integrada
sun@sun-pc:~/myproject/gcc$ mkdir build #创建个目录专门用于存放编译文件等
sun@sun-pc:~/myproject/gcc$ cd build
sun@sun-pc:~/myproject/gcc/build$ ../gcc-9.1.0/configure
sun@sun-pc:~/myproject/gcc/build$ ls
config.log config.status Makefile serdep.tmp #成功后可以看到生成了Makefile文件
Nota: Si la ejecución de la configuración falla, el error es el siguiente
checking build system type... x86_64-pc-linux-gnu
...
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
...
Indica que hay tres bibliotecas que no se pueden encontrar, a saber, GMP 4.2+, MPFR 2.4.0+ y MPC 0.8.0+
Ingrese al directorio del código fuente de gcc, use el script download_prerequisites para descargar e instalar la biblioteca que falta, de la siguiente manera :
sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ./contrib/download_prerequisites
Si el comando anterior download_prerequisites no se descarga debido a un tiempo de espera de la red, aquí hay dos soluciones:
Método 1: puede intentar cambiar la URL de download_prerequisites y luego volver a ejecutar download_prerequisites
#base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/' base_url='http://mirror.linux-ia64.org/gnu/gcc/infrastructure/'
Método 2: visita directa del navegador http://mirror.linux-ia64.org/gnu/gcc/infrastructure/ para descargar gmp-6.1.0.tar.bz2, mpfr-3.1.4.tar.bz2, mpc-1.0. 3. tar.gz (otras versiones pueden ser más grandes que GMP 4.2+, MPFR 2.4.0+ y MPC 0.8.0+), luego descomprimir y vincular
sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -jxvf gmp-6.1.0.tar.bz2 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -zxvf mpc-1.0.3.tar.gz sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ tar -jxvf mpfr-3.1.4.tar.bz2 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ls ... gmp-6.1.0 mpc-1.0.3 mpfr-3.1.4 ... #解压后生成的三个目录 sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s gmp-6.1.0 gmp sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s mpc-1.0.3 mpc sun@sun-pc:~/myproject/gcc/gcc-9.1.0$ ln -s mpfr-3.1.4 mpfr
5. Compilar el código fuente de gcc
sun@sun-pc:~/myproject/gcc/build$ make -j8
6. Instalar gcc
Use el siguiente comando para instalar, la ruta de instalación predeterminada del archivo ejecutable es /usr/local/bin/
, la ruta de instalación predeterminada de la biblioteca es/usr/local/lib/
sun@sun-pc:~/myproject/gcc/build$ sudo make install
Consejos:
El nombre completo de usr: Unix System Resource
7. Use alternativas de actualización para administrar múltiples versiones locales de gcc y g ++
Si hay varias versiones de gcc localmente, puede considerar usar alternativas de actualización para la administración.
Lo siguiente solo explica el proceso de configuración de gcc, y luego recuerde configurar g ++ también
7.1 Comprobar qué programas gcc están instalados localmente
#查看gcc的可执行文件及库文件位置,可以看到有两处
sun@sun-pc:~$ whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/share/man/man1/gcc.1.gz
#/usr/bin/gcc是原先安装的7.5.0版本
sun@sun-pc:~$ ls -l /usr/bin/gcc
lrwxrwxrwx 1 root root 5 5月 21 2019 /usr/bin/gcc -> gcc-7
#/usr/local/bin/gcc是本次安装的9.1.0版本
sun@sun-pc:~$ ls -l /usr/local/bin/gcc
-rwxr-xr-x 3 root root 7111040 8月 21 14:33 /usr/local/bin/gcc
#使用gcc命令查看版本,可以看到是9.1.0,说明终端里执行的程序是/usr/local/bin下的gcc
sun@sun-pc:~$ gcc --version
gcc (GCC) 9.1.0
Copyright © 2019 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
Pregunta: ¿Por qué el comando gcc se ejecuta de forma predeterminada /usr/local/bin/gcc en lugar de /usr/bin/gcc?
Respuesta: Mire la figura a continuación, en las variables de entorno de la terminal, /usr/local/bin está antes de /usr/bin, por lo que los programas en /usr/local/bin se ejecutan primero.
7.2 Instalar todas las versiones locales de gcc en update-alternatives
Primero cambie al usuario raíz y luego ejecute los siguientes comandos para configurar las dos versiones de gcc en la lista de alternativas de actualización.
1. 配置gcc 7.5.0到update-alternatives列表
root@sun-pc:~# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1
update-alternatives: 使用 /usr/bin/gcc-7 来在自动模式中提供 /usr/bin/gcc (gcc)
2. /usr/local/bin/gcc和gcc命令名字冲突,配置gcc 9.1.0之前先更改一下/usr/local/bin/gcc的名字
root@sun-pc:~# mv /usr/local/bin/gcc /usr/local/bin/gcc-9
root@sun-pc:~# update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-9 2
update-alternatives: 使用 /usr/local/bin/gcc 来在自动模式中提供 /usr/bin/gcc (gcc)
En cuanto a cómo usarlo, consulte la explicación de la serie de Linux: alternativas de actualización de la herramienta de administración de versiones de software local , que no se detallará aquí.
La razón por la cual /usr/local/bin/gcc necesita ser renombrado:
Como se mencionó en 7.1 arriba, el gcc bajo /usr/local/bin se ejecutará primero. Si no se cambia el nombre, cuando se ingresa el comando gcc en el terminal, el sistema estará primero en /usr/local/ Si se encuentra gcc en bin/, entonces se ejecutará el gcc en esta ruta en lugar del enlace simbólico gcc en /usr/bin. Entonces actualizar alternativas no tiene sentido para reemplazar la ruta del enlace gcc.