Как установить build-essential: i386 для компиляции 32-разрядного исполняемого файла в 64-разрядной системе?

6

apt-get install build-essential:i386 не работает вообще:

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

Обратите внимание на 14.04 . Ответы на Сбой при сборе 32-битного двоичного файла на 64-битном машина  устарели. Кроме того, скрипт ./configure не используется для Компилировать 32-разрядный бит на 64-битной системе ответ.

Подробнее

Я пытаюсь усложнить DFHack из ветки quietust: Ссылка

apt-get install gcc-multilib g++-multilib удалил

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.

, но

-- 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.

все еще существует. Должен ли я вручную искать все сборки i386 - необходимые зависимости?

    
задан int_ua 12.08.2014 в 14:45
источник

2 ответа

5

Да, для всего, что еще не упаковано в Ubuntu или в добавленном вами PPA, вам придется вручную установить все зависимости, необходимые для его компиляции. Для всего, что уже упаковано в Ubuntu, вы можете запустить apt-get build-dep $package , и он установит зависимости сборки для этого пакета, однако, если есть какие-либо дополнительные или измененные зависимости от того, что использовалось в версии, встроенной в Ubuntu, вам все равно нужно будет вручную установите эти дополнительные или измененные зависимости.

    
ответ дан dobey 12.08.2014 в 15:17
источник
1

AFAIU, оптимальный способ скомпилировать 32-битный исполняемый файл в 64-битной системе будет создавать chroot следующим образом (вы можете захотеть заменить xenial необходимым кодовым именем):

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

Затем вы можете использовать chroot только с

schroot -c xenial-i386

Обратите внимание, что по умолчанию у него не будет sudo, вам придется управлять им с помощью

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

Идея, найденная в этом ответе Ссылка

    
ответ дан int_ua 23.09.2016 в 01:27