apt-get install build-essential:i386
ne fonctionne pas du tout:
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
Notez la balise 14.04 . Les réponses sur Problème lors de la compilation d'un fichier binaire 32 bits sur une machine 64 bits sont obsolètes. De plus, il n'y a pas de script ./configure
pour utiliser la réponse Compiler 32 bits sur un système 64 bits .
J'essaie de compléter DFHack depuis la branche quietust: https://github.com/quietust/dfhack/
apt-get install gcc-multilib g++-multilib
a supprimé le
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.
message, mais
-- 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.
est toujours là. Dois-je rechercher manuellement toutes les dépendances au format i386?
Oui, pour tout ce qui n'est pas déjà packagé dans Ubuntu ou dans un PPA que vous avez ajouté, vous devrez installer manuellement toutes les dépendances nécessaires à sa compilation. Pour tout ce qui est déjà empaqueté dans Ubuntu, vous pouvez exécuter apt-get build-dep $package
et il installera les dépendances de construction de ce paquet. Toutefois, s'il existe des dépendances supplémentaires ou modifiées par rapport à celles utilisées dans la version intégrée d'Ubuntu, vous devrez toujours installer manuellement ces dépendances supplémentaires ou modifiées.
AFAIU, un moyen optimal de compiler un exécutable 32 bits sur un système 64 bits consiste à créer un chroot de la manière suivante (vous pouvez éventuellement remplacer xenial
par un nom de code requis):
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
Ensuite, vous pouvez utiliser le chroot avec juste
schroot -c xenial-i386
Notez qu’il n’aura pas de Sudo par défaut, vous devrez le gérer avec
Sudo schroot -c source:xenial-i386 -u root
Idée trouvée dans cette réponse https://askubuntu.com/a/216670/20275