Como instalar o build-essential: i386 para compilar um executável de 32 bits em um sistema de 64 bits?

6

apt-get install build-essential:i386 não funciona:

The following packages have unmet dependencies:
 build-essential:i386 : Depends: gcc:i386 (>= 4:4.4.3) but it is not going to be installed
                        Depends: g++:i386 (>= 4:4.4.3) but it is not going to be installed

Observe a tag 14.04 . Respostas sobre Problema na compilação de um binário de 32 bits em um bit de 64 bits máquina  estão desatualizados. Além disso, não há nenhum script ./configure para usar o Compile 32 bit no sistema de 64 bits

Mais detalhes

Estou tentando preencher o DFHack de uma ramificação silenciosa: link

apt-get install gcc-multilib g++-multilib removeu o

CMake Error at depends/protobuf/CMakeLists.txt:60 (MESSAGE):
  Could not find a working hash map implementation.  Please install GCC >=
  4.4, and all necessary 32-bit C++ development libraries.

mensagem, mas

-- Could NOT find Threads (missing:  Threads_FOUND) 
Can't locate XML/LibXML.pm in @INC (you may need to install the XML::LibXML module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at xml/list.pl line 6.
BEGIN failed--compilation aborted at xml/list.pl line 6.

ainda está lá. Eu tenho que procurar manualmente todas as dependências essenciais para o i386?

    
por int_ua 12.08.2014 / 14:45

2 respostas

5

Sim, para qualquer coisa que ainda não esteja no pacote do Ubuntu, ou em um PPA que você tenha adicionado, você terá que instalar manualmente todas as dependências necessárias para compilá-lo. Para qualquer coisa já empacotada no Ubuntu, você pode executar apt-get build-dep $package e instalar as dependências de compilação para esse pacote, no entanto, se houver alguma dependência adicional ou alterada do que foi usado na versão construída no Ubuntu, você ainda precisará instalar manualmente as dependências adicionais ou alteradas.

    
por dobey 12.08.2014 / 15:17
1

O AFAIU, uma maneira ideal de compilar um executável de 32 bits em um sistema de 64 bits, criaria um chroot da seguinte maneira (talvez você queira substituir xenial por um nome de código necessário):

mk-sbuild --arch=i386 xenial # Currently, first time it needs to be executed twice, unfortunately, please comment if you know how to omit this.
mk-sbuild --arch=i386 xenial

# Allowing the same home folder to be used
echo "$HOME                 /home/$USER  none  rw,bind  0  0" | sudo tee -a /etc/schroot/sbuild/fstab

Então você pode usar o chroot com apenas

schroot -c xenial-i386

Observe que ele não terá sudo por padrão, você terá que gerenciá-lo com

sudo schroot -c source:xenial-i386 -u root

A ideia encontrada nesta resposta link

    
por int_ua 23.09.2016 / 01:27