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

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

Отметьте эти тегов. Ответы на Проблеме, компилирующей двоичный файл на 32 бита на машине на 64 бита, устарели. Кроме того, существуют нет ./configure сценарий для использования Компиляции 32 обдумал 64 ответа bitsystem.

Подробнее

Я пытаюсь завершить DFHack от ответвления quietust: https://github.com/quietust/dfhack/

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 существенный для сборки зависимости?

6
задан 13 April 2017 в 05:24

2 ответа

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

5
ответ дан 23 November 2019 в 07:49

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

, Идея нашла в этом ответе https://askubuntu.com/a/216670/20275

1
ответ дан 23 November 2019 в 07:49

Другие вопросы по тегам:

Похожие вопросы: