Eu instalei o Ubuntu 14.04 (Trusty Tahr) ontem. Tudo parece bem. Mas quando tentei compilar algum código C, encontrei o seguinte erro. O erro parece ser devido à falta de suporte à arquitetura de 32 bits do sistema operacional. A saída de erro é a seguinte:
/usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 output
Eu costumava apt-get install ia32-libs
usar o Ubuntu 12.04 (Precise Pangolin). Mas o que eu sei é que o Ubuntu removeu as ia32-libs desde o Ubuntu 13.10 (Saucy Salamander). Como posso resolver este problema?
gcc -m32 helloworld.c
. Boa sorte.Respostas:
Você pode tentar isso para instalar a biblioteca de 32 bits (nem todos em ia32-libs):
sudo dpkg --add-architecture i386
pode ser necessário (se você nunca o executou).Ou se você quiser instalar o ia32-lib inteiro, tente a seguinte ordem:
PS: Desta forma, você pode instalar
ia32-libs
. No entanto, adicionamos a fonte 13.04, portanto, pode haver algum problema desconhecido. Depois de instalaria32-libs
, eu recomendo que você remova oia32-libs-raring.list
in/etc/apt/sources.list.d
e façasudo apt-get update
.Se você deseja corrigir a dependência do Android SDK, pode tentar o seguinte:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
fonte
apt-get update
. Então mudei a fonte do pacote paradeb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
. Agora funciona.Instale a biblioteca múltipla do gcc.
fonte
libstdc++6-4.7-dev:i386
é necessário para extrair as máquinas virtuais do Internet Explorer de www.modern.iesudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
A melhor resposta que já vi é como executar aplicativos de 32 bits no Ubuntu 64 bits?
fonte
Finalmente consegui! Aqui está o meu caminho e espero que possa ajudá-lo :)
Não sei por que preciso instalar isso, mas funciona no meu computador. Quando terminar de instalar esses pacotes, é hora de tentar. Oh sim, eu preciso te dizer. Desta vez, quando você quer compilar seu código, você deve adicionar
-m32
apósgcc
, por exemplo:gcc -m32 -o hello helloworld.c
. Umamake clean
emake
outra vez. Boa sorte, amigos.PS: meu ambiente é: Ubuntu 14.04 64 bits (Trusty Tahr) e GCC versão 4.8.4. Eu escrevi a solução no meu blog, mas está em chinês :-) - Como compilar o programa de 32 bits em ubuntu14.04 .
fonte
Essas bibliotecas alternativas funcionaram para mim:
fonte
Tive o mesmo problema acima e o Eclipse sugeriu a instalação:
Quando tentei instalar ia32-libs, o Ubuntu solicitou a instalação de três outros pacotes:
Com o Android Studio e o intellij, também tive que instalar a versão de 32 bits do libstdc ++ 6:
fonte
lib32z1
não tem preçoPara mim tenho que correr
antes de executar a resposta de Mike Tang. Caso contrário, não consigo instalar ia32-libs.
fonte
Basta instalar a versão de 32 bits do programa, em vez da versão de 64 bits.
Isso é muito mais seguro do que instalar pacotes que não se destinam à distribuição em questão.
Recebi essa sugestão nas instruções de instalação do Google Earth para Ubuntu 14.04 . O Google Earth costumava empregar
ia32-libs
no Ubuntu 12.04 de 64 bits.Citando webupd8.org :
O problema com alguns programas (como o Google Earth) é que o pacote de 32 bits não oferece suporte a multiarch. Conseqüentemente, algumas dependências de 32 bits precisam ser instaladas manualmente para que a versão de 32 bits do programa seja executada no Ubuntu de 64 bits.
fonte
Se você estiver na China, pode modificar "raring" para "preciso" (para Ubuntu 13.04 (Raring Ringtail) e Ubuntu 12.04 LTS (Precise Pangolin) , respectivamente). Eu instalei o Beyond Compare no Ubuntu 14.04 (Trusty Tahr).
fonte
O problema é que em muitos casos os pacotes já são multiarch, então o pacote i386 não está disponível, mas outros pacotes ainda dependem apenas do pacote i386. Este é um problema no repositório, e os gerentes dos repos devem corrigi-lo
fonte
Uma solução é adicionar a forma de pacote Debian correspondente ao seu repositório. Para isso, digite os comandos abaixo:
A primeira linha escreve no final do
sources.list
arquivo da maneira do pacote. Isso funciona para mim. Eu desejo que te ajude.fonte