linux gcc compiler-construction lfs

linux - La compilación Gcc "no puede calcular el sufijo de los archivos de objeto: no se puede compilar"



compiler-construction lfs (3)

En realidad estoy leyendo el libro LFS (versión 7.1) y estoy bloqueado en la página 53. Intentando compilar gcc, probé el siguiente comando:

./configure --target=$LFS_TGT --prefix=$LFS/build/gcc-build --disable-nls/ --disable-shared --disable-multilib --disable-decimal-float --disable-threads/ --disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath/ --disable-target-libiberty --disable-target-zlib/ --enable-languages=c/ --without-ppl --without-cloog/ --with-mpfr-include=$LFS/source/mpfr/src --with-mpfr-lib=$LFS/source/mpfr/src/.libs/ --with-gmp-include=/mnt/LFS/source/gmp/ --with-gmp-lib=/mnt/LFS/source/gmp/.libs/ --with-mpc-include=/mnt/LFS/source/mpc/src/ --with-mpc-lib=/mnt/LFS/source/mpc/src/.libs

para ejecutar el script de configuración de gcc (por supuesto, yo también compilé mpfr, mpc y gmp). Pero una vez lanzo:

make -j4

Obtuve el siguiente error:

checking for suffix of object files... configure: error: in `/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc'': configure: error: cannot compute suffix of object files: cannot compile See `config.log'' for more details. make[1]: *** [configure-target-libgcc] Error 1

Intenté buscarlo en Google y probé las soluciones que encontré, pero nada funcionó. ¿Alguien sabe por qué me sale este error?


"* Crear GCC no es trivial, pero no es difícil si sigues las instrucciones cuidadosamente. Muchas personas se apresuran a intentar construirlo sin leer correctamente los documentos de instalación y cometer uno o más de estos errores comunes:

1) no ejecute ./configure desde gcc src dir (esto no es compatible) => necesita ejecutar configure desde fuera del directorio de origen de gcc

2) Nota: si GCC se vincula dinámicamente a las bibliotecas de requisitos previos (GMP / MPFR / MPC), las bibliotecas compartidas deben estar en la ruta del enlazador dinámico (LD_LIBRARY_PATH), tanto al compilar gcc como al usar el compilador instalado. * "

Ejemplo simple (sin enlace dinámico a GMP / MPFR / MPC):

tar xzf gcc-4.8.0.tar.gz cd gcc-4.8.0 ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0 make make install

Fuentes: Advogato Doc - GNU Doc


Este mensaje de error puede surgir de varias razones diferentes. La mejor manera de averiguar cuál es verificar el archivo de registro ''/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc/config.log'' en el siguiente ejemplo. O en el caso de los carteles originales ''/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc'' y busque la última línea de error.

Preguntas frecuentes de GCC: http://gcc.gnu.org/wiki/FAQ#configure_suffix

Como cualquiera de los proyectos de GNU, GCC está utilizando las herramientas automáticas de GNU para configurar comúnmente la compilación para los aspectos específicos del sistema de compilación. Por lo tanto, el script de configuración utiliza pequeños programas de prueba, generalmente llamados conftest.c, para probar si ciertas funciones y / o funciones están disponibles. Si la compilación de dicho programa de prueba falla, verá un mensaje de error como:

checking for suffix of object files... configure: error: in `/home/manu/gcc/gcc/i686-pc-linux-gnu/libgcc'': configure: error: cannot compute suffix of object files: cannot compile See `config.log'' for more details. make[2]: *** [configure-stage1-target-libgcc] Error 1 make[2]: Leaving directory `/home/manu/gcc/gcc''

Este mensaje de error es bastante engañoso y, con frecuencia, el problema no tiene nada que ver con el mensaje. Debe verificar el archivo ''config.log'' en el directorio donde ocurrió el error. En el ejemplo anterior, tendría que verificar el archivo ''config.log'' en el directorio ''/ home / manu / gcc / gcc / i686-pc-linux-gnu / libgcc''. Puede haber varios programas de prueba que fallaron durante la configuración, pero algunas de estas fallas no son críticas. Compruebe la última entrada de error en el archivo.

Las causas comunes de este mensaje de error son:

  • Faltan las bibliotecas necesarias para la compilación GCC, específicamente MPFR, GMP y MPC. Si se instalan como bibliotecas compartidas, deben estar en la ruta de búsqueda del enlazador de tiempo de ejecución para que puedan encontrarse. Por favor, siga las instrucciones en la respuesta a ¿Por qué mi ./configure and make fail?

  • El compilador se estrelló. Por ejemplo, si hay un error como ''conftest.c: error interno del compilador:'', esto indica un error en el compilador. Si está utilizando una versión no modificada de GCC, siga el procedimiento para informar el error.


Este problema se debe a un problema en la ruta de la biblioteca de enlaces dyanmic cuando los programas de prueba intentan enlazar contra libmpc / libmpfr / libgmp.

Agregue la siguiente variable de entorno para permitir el enlace ld contra el archivo correcto para :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/mpc/lib/

A continuación, intente construir gcc de nuevo.