no se puede encontrar crti.o: No hay tal archivo o directorio

17

Cuando quiero hacer gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) en mi ubuntu 12.04 (x86_64). El gcc activo actual es 4.6.2. Lo hice:

./configure

luego

make

Sin embargo, recibo este error

/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: ld returned 1 exit status

Al buscar en la Web, parece que hay un problema con la ubicación de crti . Estos archivos están disponibles en el sistema

# find /usr/ -name crti*
/usr/lib32/crti.o
/usr/lib/x86_64-linux-gnu/crti.o
/usr/lib/debug/usr/lib/x86_64-linux-gnu/crti.o

También está instalado el paquete libc6 devel

# dpkg -l | grep libc6
ii  libc6                                  2.15-0ubuntu10.3                          Embedded GNU C Library: Shared libraries
ii  libc6-dbg                              2.15-0ubuntu10.3                        Embedded GNU C Library: detached debugging symbols
ii  libc6-dev                              2.15-0ubuntu10.3                        Embedded GNU C Library: Development Libraries and Header Files
ii  libc6-dev-i386                         2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit development libraries for AMD64
ii  libc6-i386                             2.15-0ubuntu10.3                        Embedded GNU C Library: 32-bit shared libraries for AMD64
ii  libc6-pic                              2.15-0ubuntu10.3                        Embedded GNU C Library: PIC archive library

¿Cómo puedo arreglar eso?

ACTUALIZACIÓN:

Después de agregar estos

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH 

Ese problema está resuelto. Sin embargo, ahora recibo

/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc
/usr/bin/ld: i386:x86-64 architecture of input file '/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file '/usr/lib/x86_64-linux-   gnu/crtn.o' is incompatible with i386 output
collect2: ld returned 1 exit status
    
pregunta mahmood 06.02.2013 - 13:50

4 respuestas

10

Este es un ERROR informado en el launchpad, pero hay una solución:

compilación de 64 bits de programa en plataforma de 32 bits:

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

para 32 bits nativo:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

Eso en su archivo .bashrc (o ejecutado desde una consola) es suficiente para que GCC encuentre la nueva ubicación de la biblioteca.

thx. a Iain Buclaw (ibuclaw) para señalar en la dirección correcta.

12.10 32 bits

hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
hhlp@hhlp:~$ 

LIBRARY_PATH=/usr/lib/i386-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH

12.10 64 bits

hhlp@hhlp:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
hhlp@hhlp:~$ 

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH
    
respondido por el hhlp 06.02.2013 - 18:39
1

En mi caso Ubuntu 16.04 , no tengo crti.o en absoluto:

$ find /usr/ -name crti*

Así que instalé el paquete de desarrollador:

sudo apt-get install libc6-dev
    
respondido por el Eugen Konkov 19.10.2016 - 11:21
0

Al compilar GCC 4.8 en x86-64 desde fuentes ascendentes, se encontrará con el problema de tener que compilar bibliotecas de 32 y 64 bits (a menos que se desactive la libración múltiple). En ese caso, necesita agregar las dos rutas /usr/lib/x86_64-linux-gnu y /usr/lib32 .

    
respondido por el John Vreeland 16.04.2013 - 11:18
0

También estoy construyendo una versión anterior de gcc en mi máquina Ubuntu (3.4.6 en una máquina 4.6.3)
Probé la solución de @ mahmood --disable-multilib, pero luego el paquete que necesitaba para usar gcc 3.4.6 también parecía necesitar la biblioteca de 32 bits también.

Así que agregué las bibliotecas de 64 bits y 32 bits a la BIBLIOTECA_PATH

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib32:$LIBRARY_PATH 
export LIBRARY_PATH 

Ah, y estoy en Ubuntu 12.04 64bits

    
respondido por el Heartinpiece 13.01.2014 - 06:30

Lea otras preguntas en las etiquetas