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. Yo hice:
./configure
luego
make
Sin embargo me sale 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 de desarrollo libc6
# 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?
ACTUALIZAR:
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 tengo
/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
makeinfo
no estar presente, que está en mi sistema. No puedo llegar a su error con estos pasos.Respuestas:
Este es un ERROR reportado en el launchpad, pero hay una solución alternativa:
compilando un programa de 64 bits en una plataforma de 32 bits:
para 32 bits nativos:
Eso en su archivo .bashrc (o ejecutado desde una consola) es suficiente para que GCC encuentre la nueva ubicación de la biblioteca.
Gracias. a Iain Buclaw (ibuclaw) para señalar en la dirección correcta.
12.10 32 bits
12.10 64 bits
fuente
./configure --disable-multilib
y reconstruir desde cero de acuerdo con gcc.gnu.org/ml/gcc-help/2009-05/msg00238.html Gracias por su ayudamake install
como paso final. ¡Configuré LIBRARY_PATH pero fue en vano! Cualquier ayuda apreciadaexport LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"
o (si sabe que está vacío)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
En mi caso,
Ubuntu 16.04
no tengo nadacrti.o
:Entonces instalo el paquete de desarrollador:
fuente
Al crear GCC 4.8 en x86-64 a partir de fuentes ascendentes, se encuentra con el problema de necesitar construir bibliotecas de 32 y 64 bits (a menos que la opción multi-lib esté desactivada). En ese caso, debe agregar ambas rutas
/usr/lib/x86_64-linux-gnu
y/usr/lib32
.fuente
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 @disable-multilib de @ mahmood, pero luego el paquete que necesitaba para usar gcc 3.4.6 también parecía para necesitar la biblioteca de 32 bits también.
Por lo tanto, agregué las bibliotecas de 64 bits y 32 bits a la LIBRARY_PATH
Ah, y estoy en Ubuntu 12.04 64bits
fuente