web-dev-qa-db-fra.com

ne peut pas trouver crti.o: Aucun fichier ou répertoire de ce type

Quand je veux faire gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar. bz2 ) sur mon Ubuntu 12.04 (x86_64). Le gcc actif actuel est 4.6.2. J'ai fait:

./configure

puis

make

Cependant je reçois cette erreur

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

En recherchant sur le Web, il semble y avoir un problème avec l'emplacement de crtiname__. Ces fichiers sont disponibles sur le système

# 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

Le paquet de développement libc6 est également installé.

# 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

Comment puis-je résoudre ce problème?

UPDATE:

Après avoir ajouté ces

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

Ce problème est résolu. Cependant maintenant je reçois

/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
19
mahmood

Ceci est un BUG signalé dans le tableau de bord, mais il existe une solution de contournement:

compiler un programme 64 bits sur une plate-forme 32 bits:

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

pour 32 bits natif:

LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH
export LIBRARY_PATH

Cela dans votre fichier .bashrc (ou depuis une console) suffit pour que GCC trouve le nouvel emplacement de la bibliothèque.

tHX. Iain Buclaw (ibuclaw) à indiquer dans la bonne direction.

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
13
hhlp

Dans mon cas, Ubuntu 16.04 the, je n'ai aucun crti.o:

$ find /usr/ -name crti*

Donc j'installe le paquet du développeur:

Sudo apt-get install libc6-dev
1
Eugen Konkov

En créant GCC 4.8 sur x86-64 à partir de sources en amont, vous rencontrez le problème de la nécessité de créer des bibliothèques 32 bits et 64 bits (à moins que multi-lib soit désactivé). Dans ce cas, vous devez ajouter les deux chemins /usr/lib/x86_64-linux-gnu et /usr/lib32.

0
John Vreeland

Je construis également une ancienne version de gcc sur ma machine Ubuntu (3.4.6 sur une machine 4.6.3)
J'ai essayé la solution --disable-multilib de @ mahmood, mais le paquet dont j'avais besoin pour utiliser gcc 3.4.6 semblait également nécessiter la bibliothèque 32 bits.

J'ai donc ajouté les bibliothèques 64 bits et 32 ​​bits à la bibliothèque LIBRARY_PATH.

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

Oh et je suis sur Ubuntu 12.04 64bits

0
Heartinpiece