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