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 из ветви тишины: 14.04
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 - необходимые зависимости?
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
[d3 ] Идея, найденная в этом ответе https://askubuntu.com/a/216670/20275