non riesce a trovare crti.o: nessun file o directory di questo tipo

17

Quando voglio creare gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) su my Ubuntu 12.04 (x86_64). L'attuale gcc attivo è 4.6.2. L'ho fatto:

./configure

poi

make

Tuttavia ottengo questo errore

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

Cercando sul web sembra che ci sia un problema con la posizione di crti . Questi file sono disponibili sul 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

Anche il pacchetto di sviluppo di libc6 è installato

# 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

Come posso risolvere il problema?

UPDATE:

Dopo aver aggiunto questi

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

Questo problema è risolto. Comunque ora ho

/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
    
posta mahmood 06.02.2013 - 14:50

4 risposte

10

Questo è un BUG riportato nel launchpad, ma c'è una soluzione:

compilazione di un programma a 64 bit in una piattaforma a 32 bit:

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

per nativi a 32 bit:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

Quello nel file .bashrc (o eseguito da una console) è sufficiente per GCC per trovare la nuova posizione della libreria.

thx. a Iain Buclaw (ibuclaw) per indicare nella giusta direzione.

12,10 32 bit

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/i386-linux-gnu/crti.o
[email protected]:~$ 

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

12,10 64 bit

[email protected]:~$ sudo find /usr/ -name crti*
/usr/lib/x86_64-linux-gnu/crti.o
[email protected]:~$ 

LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH 
export LIBRARY_PATH
    
risposta data hhlp 06.02.2013 - 19:39
1

Nel mio caso Ubuntu 16.04 non ho affatto crti.o :

$ find /usr/ -name crti*

Quindi installo il pacchetto per sviluppatori:

sudo apt-get install libc6-dev
    
risposta data Eugen Konkov 19.10.2016 - 13:21
0

Costruire GCC 4.8 su x86-64 da fonti upstream si incontra il problema di dover costruire entrambe le librerie a 32 e 64 bit (a meno che il multi-lib non sia disabilitato). In tal caso devi aggiungere entrambi i percorsi /usr/lib/x86_64-linux-gnu e /usr/lib32 .

    
risposta data John Vreeland 16.04.2013 - 13:18
0

Sto anche costruendo una versione precedente di gcc sulla mia macchina Ubuntu (3.4.6 su una macchina 4.6.3)

Ho provato la soluzione --disable-multilib di @ mahmood, ma anche il pacchetto che avevo bisogno di usare gcc 3.4.6 sembrava aver bisogno anche della libreria a 32 bit.

Così ho aggiunto entrambe le librerie a 64 bit e 32 bit a LIBRARY_PATH

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

Oh e sono su Ubuntu 12.04 64bits

    
risposta data Heartinpiece 13.01.2014 - 07:30

Leggi altre domande sui tag