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 ) no meu Ubuntu 12.04 (x86_64). O gcc ativo atual é 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
Também 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?
ATUALIZAR:
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
makeinfo
não estar presente, que está no meu sistema. Não é possível obter o seu erro com estas etapas.Respostas:
Este é um erro relatado na barra de ativação, mas existe uma solução alternativa:
compilando um programa de 64 bits na plataforma de 32 bits:
para nativo de 32 bits:
Isso no seu arquivo .bashrc (ou executado em um console) é suficiente para o GCC encontrar o novo local da biblioteca.
THX. a Iain Buclaw (ibuclaw) para apontar na direção certa.
12.10 32 bits
12.10 64 bits
fonte
./configure --disable-multilib
e reconstruir a partir do zero de acordo com gcc.gnu.org/ml/gcc-help/2009-05/msg00238.html Obrigado por sua ajudamake install
como etapa final. Eu configurei LIBRARY_PATH, mas sem sucesso !! Qualquer ajuda apreciadaexport LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LIBRARY_PATH+:$LIBRARY_PATH}"
Ou (se você sabe que está vazia)export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
No meu caso,
Ubuntu 16.04
eu não tenho nadacrti.o
:Então eu instalo o pacote do desenvolvedor:
fonte
Ao criar o GCC 4.8 no x86-64 a partir de fontes upstream, você enfrenta o problema de precisar criar bibliotecas de 32 e 64 bits (a menos que a multi-lib esteja desabilitada). Nesse caso, você precisa adicionar os dois caminhos
/usr/lib/x86_64-linux-gnu
e/usr/lib32
.fonte
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)
. Tentei a solução --disable-multilib da @ mahmood, mas o pacote que eu precisava usar o gcc 3.4.6 também pareceu também precisa da biblioteca de 32 bits.
Assim, adicionei as bibliotecas de 64 e 32 bits ao LIBRARY_PATH
Ah, e eu estou no Ubuntu 12.04 64bits
fonte