não pode encontrar crti.o: Nenhum arquivo ou diretório

17

Quando eu quero fazer o gcc 4.1.2 ( ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2 ) em meu Ubuntu 12.04 (x86_64). O atual gcc ativo é o 4.6.2. Eu fiz:

./configure

então

make

No entanto, recebo este erro

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

Pesquisando na web, parece que há um problema com a localização de crti . Esses arquivos estão disponíveis no 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

Além disso, o pacote libc6 devel está instalado

# 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

Como posso consertar isso?

ATUALIZAÇÃO:

Depois de adicionar estes

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

Esse problema está resolvido. No entanto agora eu recebo

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

4 respostas

10

Este é um BUG informado no launchpad, mas há uma solução alternativa:

compilando o programa de 64 bits na 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

Isso no seu arquivo .bashrc (ou executado em um console) é suficiente para o GCC encontrar o novo local da biblioteca.

thx. para Iain Buclaw (ibuclaw) para apontar na direção certa.

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
    
por hhlp 06.02.2013 / 19:39
1

No meu caso, Ubuntu 16.04 , não tenho crti.o :

$ find /usr/ -name crti*

Então, eu instalo o pacote do desenvolvedor:

sudo apt-get install libc6-dev
    
por Eugen Konkov 19.10.2016 / 13:21
0

Construindo o GCC 4.8 em x86-64 a partir de fontes upstream você depara com o problema de precisar construir bibliotecas de 32 e 64 bits (a menos que o multi-lib esteja desativado). Nesse caso, você precisa adicionar os dois caminhos /usr/lib/x86_64-linux-gnu e /usr/lib32 .

    
por John Vreeland 16.04.2013 / 13:18
0

Eu também estou construindo uma versão mais antiga do gcc na minha máquina Ubuntu (3.4.6 em uma máquina 4.6.3)
Eu tentei a solução --disable-multilib do @mahmood, mas o pacote que eu precisava para usar o gcc 3.4.6 também parecia precisar da biblioteca de 32 bits também.

Assim, adicionei as bibliotecas de 64 e 32 bits ao LIBRARY_PATH

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

Ah, e estou no Ubuntu 12.04 64bits

    
por Heartinpiece 13.01.2014 / 07:30

Tags