2012-02-04 10 views
12

problema al compilar gcc 4.6.2:(no puede calcular el sufijo de los archivos de objetos)

checking for avr-gcc... /data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/ -B/data/data6/soft/programming/gcc-avr/avr/bin/ -B/data/data6/soft/programming/gcc-avr/avr/lib/ -isystem /data/data6/soft/programming/gcc-avr/avr/include -isystem /data/data6/soft/programming/gcc-avr/avr/sys-include 
checking for suffix of object files... configure: error: in `/data/data6/soft/src_build/gcc-4.6.2/avr/libgcc': 
configure: error: cannot compute suffix of object files: cannot compile 
See `config.log' for more details. 

En mi gcc-4.6.2/AVR/libgcc/config.log que encontré:

configure:3268: /data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/data/data6/soft/src_build/gcc-4.6.2/host-x86_64-unknown-linux-gnu/gcc/ -B/data/data6/soft/programming/gcc-avr/avr/bin/ -B/data/data6/soft/programming/gcc-avr/avr/lib/ -isystem /data/data6/soft/programming/gcc-avr/avr/include -isystem /data/data6/soft/programming/gcc-avr/avr/sys-include -c -g -O2 conftest.c >&5 
exec: 89: -o: not found 
configure:3272: $? = 1 
configure: failed program was: 
| /* confdefs.h */ 
| #define PACKAGE_NAME "GNU C Runtime Library" 
| #define PACKAGE_TARNAME "libgcc" 
| #define PACKAGE_VERSION "1.0" 
| #define PACKAGE_STRING "GNU C Runtime Library 1.0" 
| #define PACKAGE_BUGREPORT "" 
| /* end confdefs.h. */ 
| 
| int 
| main() 
| { 
| 
| ; 
| return 0; 
| } 
configure:3286: error: in `/data/data6/soft/src_build/gcc-4.6.2/avr/libgcc': 
configure:3289: error: cannot compute suffix of object files: cannot compile 
See `config.log' for more details. 

Si este comando se ejecuta directamente (después de crear conftest.c) la salida será la misma.

¿Qué es exec: 89: -o: no encontrado? ¿Qué programa lo escribe? ¿Dónde está la línea 89?

Soluciones como exportar LD_CONFIG_PATH o agregar líneas en /etc/ld.so.conf con ruta a GMP, MPFR, MPC no funcionan para mí.

¿Dónde encontrar solución a este problema?

Actualización. Parece que hay un problema de configuración. Gcc tiene una muy buena opción -v :-) Y veo que es una llamada de ensamblador de gcc, que falla. Con la opción -save-temps guardé la fuente del ensamblador y ejecuté el ensamblador, pero no importa.

En lugar de llamar ensamblador reales que llama envoltura del shell-script, en mi caso/datos/datos6/soft/src_build/avr-gcc/gcc/as, que comienza a partir de:

ORIGINAL_AS_FOR_TARGET="" 
ORIGINAL_LD_FOR_TARGET="" 
ORIGINAL_PLUGIN_LD_FOR_TARGET="" 
ORIGINAL_NM_FOR_TARGET="" 

Y cuando se forma de línea de comandos de llamada, tenemos esto:

exec -o conftest.o conftest.s 

que falla como se describe anteriormente.

Donde es necesario arreglar esto? Para obtener una llamada como esta: ejecutivo como -o conftest.o conftest.s

Donde buen lugar para establecer la variable ORIGINAL_AS_FOR_TARGET?

+0

¿Cuál es su argumento exacto para '..../configure'? ¿Le pasaste una variable 'CC'? ¿Tienes un compilador de C? ¿Por qué? ¿Qué ejecutable es? ¿Está en tu 'PATH'? ¿Cuál es su sistema operativo host? ¿Estás seguro de que estás creando gcc fuera de su árbol fuente? ¿Cuáles son los árboles fuente y árbol genealógico de GCC? ¿Leyó * cuidadosamente * http://gcc.gnu.org/install/? –

+0

Basile, gracias por responder. Es el último ubuntu, el árbol de compilación está FUERA, compilador - gnu gcc 4.6.1 x86_64, objetivo - avr./data/data6/soft/src_build/avr-gcc - es el árbol de compilación, /data/data6/soft/src_build/gcc-4.6.2 - es el árbol de fuentes. –

+1

En Debian o Ubuntu: intente primero 'aptitude build-dep gcc-avr binutils-avr; aptitude install gcc-avr binutils-avr' –

Respuesta

3

Tuve el mismo problema de compilación cruzada para mips.

Paso uno: compilación cruzada de los binutils para su objetivo. Instálalos en algún lugar cuerdo. Yo uso/usr/local/[objetivo] -gcc

Asegúrese de que los configura con --program-prefix = [destino] -

Algo así (no probado):

configure --prefix=/usr/local/avr-gcc --program-prefix=avr- --target=avr 

Entonces necesita configurar algunas variables de entorno para que GCC pueda encontrarlas:

export AR_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ar 
export LD_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ld 
export OBJDUMP_FOR_TARGET=/usr/local/avr-gcc/bin/avr-objdump 
export NM_FOR_TARGET=/usr/local/avr-gcc/bin/avr-nm 
export RANLIB_FOR_TARGET=/usr/local/avr-gcc/bin/avr-ranlib 
export READELF_FOR_TARGET=/usr/local/avr-gcc/bin/avr-readelf 
export STRIP_FOR_TARGET=/usr/local/avr-gcc/bin/avr-strip 
export AS_FOR_TARGET=/usr/local/avr-gcc/bin/avr-as 

Ahora puede configurar y compilar GCC. Asegúrese de comenzar desde un directorio de compilación completamente vacío; de lo contrario, no se volverá a crear gcc/as, etc.

2

"* GCC construcción no es trivial, pero no es difícil si se siguen las instrucciones cuidadosamente Muchas personas se precipitan en tratar de construirlo sin leer los documentos de instalación correctamente y hacer uno o más de estos errores comunes:.

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

2) Nota: si los enlaces del CCG dinámicamente a las bibliotecas de requisitos previos (GMP/MPFR/MPC), entonces el bibliotecas compartidas deben estar en el camino del enlazador dinámico (LD_LIBRARY_PATH), tanto en la construcción de gcc y cuando se utiliza el compilador instalado *"

ejemplo simple (sin enlace dinámico con 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

Cuestiones relacionadas